[英]Regex for valid url
我需要验证应该是的网址
google.com or
yahoo.co.uk etc
我的意思是我不需要http或www。 我的正则表达式代码是这样的。但它对我不起作用。
/^[a-zA-Z0-9][a-zA-Z0-9-][a-zA-Z0-9]\.[a-zA-Z]{2,}$/
你当前的正则表达式不起作用,因为它在前面只需要三个字符.
:首先匹配[a-zA-Z0-9]
的字符,然后匹配[a-zA-Z0-9-]
的字符,然后匹配[a-zA-Z0-9]
的字符。 你的正则表达式只允许一个.
输入中的任何地方。
对于可变长度字符串,您需要使用+
或*
或{}
语法,就像在正则表达式的最后部分一样。
要保持基本相同的验证,你似乎正在拍摄,但让它适用于不同长度,尝试:
/^[A-Z\d-]+(\.[A-Z\d-]+)*\.[A-Z]{2,}$/i
那是:
[AZ\\d-]+
匹配一个或多个字母,数字或连字符,后跟
(\\.[AZ\\d-]+)*
零个或多个点后跟一个或多个这些字符的实例,后跟
\\.[AZ]{2,}
带有两个或更多AZ的最后一个点。
请注意,如果将i
标志添加到正则表达式以使其不区分大小写,则可以使用大写AZ
范围。
您的原始模式只希望允许第一部分不以短划线开头或结尾的网址。 在重要的情况下,我已经制定了一个模式,为您做到这一点。
/^(?:(?!-)[a-z\d-]+[^-]\.)+[a-z]{2,6}$/i
这解决了nnnnn在他的回答中解决的相同问题,但它也不允许url的任何部分以连字符开头或结尾。
我还可以推荐regexpal来实时测试匹配。 它使用javascript样式的正则表达式匹配。
将正则表达式放在顶部字段中,将测试数据放在底部。 您将需要删除封装它的斜杠。 选中“不区分大小写(i)”和“^ $ match at line breaks(m)”框
一些测试数据:
google.com
yahoo-.com
www.YAHOO.co.uk
-yahoo.co.uk
http://www.regular-expressions.info/
hey.subdomain.sub.sub.domain.com
co.uk
现在,使用^ $与否之间的区别将证明自己。 你会看到一些网址不匹配,即使它们是有效的。 多行(m)标志允许您将输入中的每一行视为单独的字符串。 我给你的正则表达式只会匹配整个字符串匹配,但有些网址即使有效也是有效的。 不区分大小写(i)等于正则表达式末尾的“i”。
尝试删除行开头(^)和行尾($)的锚点,看看它是如何匹配的。
我不确定你是如何运行比赛的,但这值得考虑。
尝试这个:
(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.