我无法编写有效的正则表达式来验证以下内容:
www.example.com
www.example.com/
example.com
http://www.example.com
https://example.com
111.111.111.111
1.1.1.1
1.1.1.123
http://1.1.1.1
http://1.1.1.1/
example.com
example.com/
http://www.example.com/
我目前只有这个正则表达式:
^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$|https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)|(www\.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)|^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$|(?:http:\/\/|www\.|https:\/\/[\/])([^\/]+)|^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$[\/]
&安培;只会验证这一点:Screenshot of Validated Domains
我的问题是,任何人都可以帮助我获得一个正常运行的正则表达式,允许所有这些示例域以html模式被允许吗?谢谢!
答案 0 :(得分:2)
这种简化方法怎么样:
^(https?://)?[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/?$|^(https?://)?([a-z0-9-][a-z0-9-]+\.)+[a-z][a-z]+/?
看看试验台:https://regex101.com/r/3VpAxI/1
然而,正则表达式匹配网址存在一些常见问题:
http(s)
个网址,没有其他协议。 肯定可能是某些字符串被不想要接受,但实际上你的排除定义非常含糊......
答案 1 :(得分:0)
您也可以试试这个。我没有使用您的网址验证正则表达式模式。但它的确有效。有关您在问题中提供的有效网址列表。但是在正则表达式下面使用上面列出的网址或者像这样,如果你改变模式它不会。在这里,
((http|https)\:\/\/)?(([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})\/?)|((http|https)\:\/\/)?(([a-z0-9-]+\.)([a-z0-9-]+\.)?([a-z]+)\/?)
我在这里测试过它。 https://regex101.com/r/P1ba2V/2
希望它对你有所帮助。