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

时间:2011-01-10 02:02:38

标签: regex

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

我该怎么做?我正在尝试以下无法正常工作:

^[(http)(https)]://

9 个答案:

答案 0 :(得分:302)

您对[]的使用不正确 - 请注意[]表示字符类,因此只匹配一个字符。表达式[(http)(https)]转换为“匹配(http,{{1} }或)。“ (忽略重复的字符。)

试试这个:

s

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

^https?://

答案 1 :(得分:35)

不区分大小写:

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

答案 2 :(得分:25)

^https?://

您可能必须转义正斜杠,具体取决于上下文。

答案 3 :(得分:17)

^https?:\/\/(.*) where (.*) is match everything else after https://

答案 4 :(得分:15)

这应该有效

^(http|https)://

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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

这是我要做的才能使其在asp.net RegularExpressionValidator 中工作:

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

注意:

  • (?i)和使用/whatever/i无法正常工作,可能是因为javascript并未引入所有区分大小写的功能
  • 开始时最初有^,但没关系,但是(.*)确实有效(如果没有(.*),表达式就不起作用,但是如果没有^,表达式就起作用了) / li>
  • 虽然可能是个好主意,但不必逃避//

如果需要,这里是完整的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>

答案 7 :(得分:0)

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

?用于重复0或1次。即s? s 可以存在1次或根本不需要存在。

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

进行转义。
/^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

答案 8 :(得分:0)

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

这对我有用

不是正则表达式专家,但我将尝试解释遮阳篷。

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

\ / \ /:“ \”允许使用特殊字符,例如“ /”

(\ S +):直到下一个空格都没有空格的所有内容