正则表达式测试字符串是否以http://或https://开头

Cli*_*ote 184 regex

我正在尝试设置一个regexp来检查一个字符串的开头,如果它包含一个http://或者https://它应该匹配它.

我怎样才能做到这一点?我正在尝试以下无效的方法:

^[(http)(https)]://
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 328

你的使用[]是不正确的 - 注意[]表示一个字符类,因此只匹配一个字符.该表达式[(http)(https)]转换为"匹配a (,an h,a t,a t,a p,a )或an" s.(忽略重复的字符.)

试试这个:

^https?://
Run Code Online (Sandbox Code Playgroud)

如果您确实想要使用替换,请改用以下语法:

^(http|https)://
Run Code Online (Sandbox Code Playgroud)

  • 史蒂夫,我想你最后错过了一个/ $:$ regex ='/ ^(https?:\ /\/)/'; (9认同)
  • 为了防止一些坚果意外地使用http,$ regex ='/ ^(https?:\ /\/)/ i'; (6认同)
  • 作为 PHP 输入字符串: $regex = '/^(https?:\/\/)'; (3认同)
  • 你忘了转义 / 使用 \。所以它会是`^https?:\/\/`。我对吗? (3认同)
  • @Shafizadeh` /`不是正则表达式中的特殊字符,只有在`/`用于表示文字正则表达式的语言中.例如,在使用C#时,没有必要在正则表达式中转义`/`,因为C#正则表达式(部分地)表示为字符串文字.你也不需要它们,比如Perl(当使用替换分隔符时,如在`m#^ https?://#`中).所以直接发表您的评论:(a)不,我没有忘记逃避任何事情.(b)您将需要逃避任何以您选择的语言特别对待的角色. (3认同)

mis*_*hap 38

不区分大小写:

var re = new RegExp("^(http|https)://", "i");
var str = "My String";
var match = re.test(str);
Run Code Online (Sandbox Code Playgroud)


orl*_*rlp 25

^https?://
Run Code Online (Sandbox Code Playgroud)

您可能必须逃避正斜杠,具体取决于上下文.


小智 18

^https?:\/\/(.*)在哪里(.*)匹配其他一切https://


Tas*_*han 15

这应该工作

^(http|https)://
Run Code Online (Sandbox Code Playgroud)