我想设置一个正则表达式,用于检查字符串的开头是否包含http://
或https://
,如果包含,则匹配。
我该如何做?我正在尝试以下代码,但它并不起作用:
^[(http)(https)]://
我想设置一个正则表达式,用于检查字符串的开头是否包含http://
或https://
,如果包含,则匹配。
我该如何做?我正在尝试以下代码,但它并不起作用:
^[(http)(https)]://
[]
是不正确的 -- 请注意 []
表示一个字符类,因此只能匹配一个字符。表达式 [(http)(https)]
的意思是 "匹配一个 (
,一个 h
,一个 t
,一个 t
,一个 p
,一个)
或者一个 s
" (重复的字符会被忽略)。^https?://
^(http|https)://
^https?:\/\/
。我说得对吗? - Shafizadeh/
并不是特殊字符,而是在某些编程语言中用于表示字面正则表达式的符号。例如,在使用 C# 的正则表达式时,不需要转义 /
,因为 C# 正则表达式部分是作为字符串字面量表示的。同样,在 Perl 中(当使用替代定界符 m#^https?://#
时),也不需要转义。因此,针对您的评论直接回答:(a) 不,我没有忘记转义任何字符。(b) 您需要转义在您选择的编程语言中被视为特殊字符的任何字符。 - cdhowie不区分大小写:
var re = new RegExp("^(http|https)://", "i");
var str = "My String";
var match = re.test(str);
^https?:\/\/(.*)
其中(.*)
匹配的是https://
之后的所有内容。
^https?://
根据上下文,你可能需要转义斜杠。
这应该可以工作
^(http|https)://
(http|https)?:\/\/(\S+)
这对我很有效。
虽然我不是正则表达式专家,但我会尝试解释答案。
(http|https):括号表示捕获组,“|”表示或语句。
\/\/:反斜杠允许特殊字符,例如“/”。
(\S+):任何非空格字符直到下一个空格。
^
代表字符串模式的开始
?
表示允许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
这也适用于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>
[]
来创建一个 字符组。它将匹配 一个 字符,可以是(
、)
、h
、t
、t
、p
或者s
中的任意一个。例如,它会匹配s://
,但不会匹配ht://
或者x://
。 - Felix Kling/^x/
和indexOf(x) == 0
。"以...开头"风格的方法可能具有更少的开销,但我认为这很少会有影响——选择最干净的方式即可,例如:x.StartWith("http://") || x.StartsWith("https://")
,但请出于代码清晰度的考虑这样做,而不是试图通过这种方式提高性能,除非根据分析和需求进行证明。 - user166390