Regex测试字符串是否以http://或https://开头

我试图设置一个regexp,它将检查字符串的开始,如果它包含http://https://,它应该匹配它。

我该怎么做呢?我正在尝试下面的,但它不起作用:

^[(http)(https)]://
569020 次浏览

你使用[]是不正确的——注意,[]表示[]0,因此只匹配一个字符。表达式[(http)(https)]转换为“匹配(http)s。”(重复字符将被忽略。)

试试这个:

^https?://

如果你真的想使用交替,请使用以下语法:

^(http|https)://
^https?://

不过,您可能必须转义正斜杠,这取决于上下文。

这应该可以

^(http|https)://

不分大小写:

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

^https?:\/\/(.*),其中(.*)匹配https://之后的所有其他内容

这也适用于URL编码的字符串。

^(https?)(:\/\/|(\%3A%2F%2F))

使这种大小写不敏感在asp.net中不起作用,所以我只指定了每个字母。

下面是我必须做的让它在asp.net RegularExpressionValidator控件中工作:

[Hh][Tt][Tt][Pp][Ss]?://(.*)

注:

  • (?i)和使用/whatever/i不能工作,可能是因为javascript没有带来所有区分大小写的功能
  • 最初在开始时有^,但这并不重要,但(.*)有(表达式没有(.*)不能工作,但没有^可以工作)
  • 不需要转义//,尽管这可能是一个好主意。

如果你需要的话,这里是完整的RegularExpressionValidator:

<asp:RegularExpressionValidator ID="revURLHeaderEdit" runat="server"
ControlToValidate="txtURLHeaderEdit"
ValidationExpression="[Hh][Tt][Tt][Pp][Ss]?://(.*)"
ErrorMessage="URL should begin with http:// or https://" >
</asp:RegularExpressionValidator>

^用于字符串模式的开始,

?允许0或1次重复。ie。, s? <年代trong>年代可以存在一次或根本不需要存在。

/是正则表达式中的一个特殊字符,因此需要用反斜杠\/来转义

/^https?:\/\//.test('https://www.bbc.co.uk/sport/cricket'); // true


/^https?:\/\//.test('http://www.bbc.co.uk/sport/cricket'); // true


/^https?:\/\//.test('ftp://www.bbc.co.uk/sport/cricket'); // false

(http|https)?:\/\/(\S+)

这对我很有用

不是一个正则表达式专家,但我会尝试解释awnser。

(http|https):括号表示捕获组,“;I"OR语句。

\/\/: "\"允许使用特殊字符,如"/"

(\S+):任何在下一次空白之前都不是空白的内容