正则表达式用ip和域验证url?

时间:2012-09-26 12:22:13

标签: regex url ip-address

我正在使用以下正则表达式来验证可能是的网址:

@"http[s]?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?";

支配 www.abc.com(验证它) subdomain.abc.com(验证它)

Ip地址 192.168.0.1(验证它) 182.494.29.23(验证)

我想限制无效的IP地址 192.192(上面的表达式也验证了它) 192.192.192(上面的表达式也验证了它)

任何人都指导我需要在上面的表达式中添加哪些更改来限制这些无效的IP地址?

提前致谢。

2 个答案:

答案 0 :(得分:0)

你可以试试这个正则表达式:

/^http(s?)://((\w+\.)?\w+\.\w+|((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}))(/)?$/gm

它有点冗长,但它适用于abc.domain.com,domain.com和有效的IP地址。 您可以对其进行测试here

它分为“文本”部分,(\w+\.)?\w+\.\w+匹配任何没有空格且带有一个或两个点的文本,以及一个数字部分((2[0-5]{2}|1[0-9]{2}|[0-9]{1,2})\.){3}(2[0-5]{2}|1[0-9]{2}|[0-9]{1,2}),允许四个数字在0到255之间分隔通过点。

可选地,最后可以有一个斜杠。

如果你不是要允许由单个字符组成的域(例如abc),但是,比方说,至少像www.bit.ly(即,带有1个或更多字符的自由前缀,“body”)三个或更多,以及两个或更多的后缀),您可以将文本部分更改为:

(\w+\.)?\w{3,}\.\w{2,}

参考:

http://RegExr.com?2ri07(正则表达式匹配ip)

答案 1 :(得分:0)

你可以试试这个正则表达式。支持http、https、ip地址、不同端口的ip地址和任意域名。

<块引用>

/^http(s?)://((\w+.)?\w+.\w+|((2[0-5]{2}|1[0-9]{2}|[0 -9]{1,2}).){3}(2[0-5]{3}|1[0-9]{3}|[0-9]{1,2})(:\d {1,5})?)(((/)(.+)?)?)$/gm,