繁体   English   中英

有效网址的正则表达式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM