0

i am using following regular expression to validate a url that could be:

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

A domin www.abc.com (Validates it) subdomain.abc.com (Validates it)

An Ip Address 192.168.0.1 (Validates it) 182.494.29.23 (Validates it)

I want to restrict non valid ip addresses 192.192 (Above Expression Validates it as well) 192.192.192 (Above Expression Validates it as well)

any one guide me what changes i need to add in above expression to restrict these non valid ip addresses?

Thanks in advance.

4

2 回答 2

1

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

/^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 地址。你可以在这里测试它。

它分为“文本”部分,(\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)

于 2012-09-26T12:32:18.677 回答
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,

于 2021-06-04T08:55:12.357 回答