修改Regex使其也与IP地址匹配

修改Regex使其也与IP地址匹配,regex,validation,Regex,Validation,我当前用于验证URL: [a-z0-9-9-10-9-9-9-9+手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手

我当前用于验证URL:

[a-z0-9-9-10-9-9-9-9+手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手手|[0-9])?(\/([a-z0-9+\$\-]\.?)+)*/?(\?[a-z+&\$\$\.-][a-z0-9;:@&%=+\/\$\$\.-*)?([a-z.-][a-z0-9+\$\$\.-*))?$

它与相当长的URL列表相匹配:

google.com
google.com#a1
google.com?abc=123
google.com:80
google.com:80#a1
google.com:80?abc=123
google.com:80/test
google.com:80/test#a1
google.com:80/test?abc=123
google.com:80/test?abc=123#a1
www.google.com
www.google.com#a1
www.google.com?abc=123
www.google.com:80
www.google.com:80#a1
www.google.com:80?abc=123
www.google.com:80/test
www.google.com:80/test#a1
www.google.com:80/test?abc=123
www.google.com:80/test?abc=123#a1
www.www.google.com
www.www.google.com#a1
www.www.google.com?abc=123
www.www.google.com:80
www.www.google.com:80#a1
www.www.google.com:80?abc=123
www.www.google.com:80/test
www.www.google.com:80/test#a1
www.www.google.com:80/test?abc=123
www.www.google.com:80/test?abc=123#a1
john:smith@google.com
john:smith@google.com#a1
john:smith@google.com?abc=123
john:smith@google.com:80
john:smith@google.com:80#a1
john:smith@google.com:80?abc=123
john:smith@google.com:80/test
john:smith@google.com:80/test#a1
john:smith@google.com:80/test?abc=123
john:smith@google.com:80/test?abc=123#a1
john:smith@www.google.com
john:smith@www.google.com#a1
john:smith@www.google.com?abc=123
john:smith@www.google.com:80
john:smith@www.google.com:80#a1
john:smith@www.google.com:80?abc=123
john:smith@www.google.com:80/test
john:smith@www.google.com:80/test#a1
john:smith@www.google.com:80/test?abc=123
john:smith@www.google.com:80/test?abc=123#a1
john:smith@www.www.google.com
john:smith@www.www.google.com#a1
john:smith@www.www.google.com?abc=123
john:smith@www.www.google.com:80
john:smith@www.www.google.com:80#a1
john:smith@www.www.google.com:80?abc=123
john:smith@www.www.google.com:80/test
john:smith@www.www.google.com:80/test#a1
john:smith@www.www.google.com:80/test?abc=123
john:smith@www.www.google.com:80/test?abc=123#a1
但是,它与这些URL不匹配,据我所知,这些URL也是有效的:

8.8.8.8
8.8.8.8#a1
8.8.8.8?abc=123
8.8.8.8:80
8.8.8.8:80#a1
8.8.8.8:80?abc=123
8.8.8.8:80/test
8.8.8.8:80/test#a1
8.8.8.8:80/test?abc=123
8.8.8.8:80/test?abc=123#a1
john:smith@8.8.8.8
john:smith@8.8.8.8#a1
john:smith@8.8.8.8?abc=123
john:smith@8.8.8.8:80
john:smith@8.8.8.8:80#a1
john:smith@8.8.8.8:80?abc=123
john:smith@8.8.8.8:80/test
john:smith@8.8.8.8:80/test#a1
john:smith@8.8.8.8:80/test?abc=123
john:smith@8.8.8.8:80/test?abc=123#a1
作为参考,我发现这一个适用于IP地址,它似乎工作得很好:

^((?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\){3}(:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)

我怎样才能把它们绑在一起?或者,有更好的正则表达式来匹配这里的所有URL吗

演示:


您可以通过执行
(?:|)
将两个正则表达式组合在一起,这意味着任何与regex1或regex2匹配的操作。(
?:
表示添加的括号将无法捕获)


您可以在网上找到各种用于URL验证的正则表达式,例如,列出了许多正则表达式。

验证电子邮件地址比验证网页URL要复杂一些。事实上 确定用于验证电子邮件地址的适当正则表达式似乎是一个没有明确正确答案的问题;看

如果使用PHP,则不限于使用正则表达式验证电子邮件地址和URL,如下代码所示:

<?php
$url = "http://8.8.8.8";
$mess = (!filter_var($url, FILTER_VALIDATE_URL))? "invalid" : "valid";
echo $mess, ": $url\n";

$email = "me@he re.com";
$mess = (!filter_var($email, FILTER_VALIDATE_EMAIL))? "invalid" :"valid";
echo $mess, ": $email\n";

@hwnd哪个数据?示例URL是我要验证的网站的有效URL。regex是from。括号是不必要的——只需
regex1 | regex2
即可。但是,如果您将某些部分排除在外,则需要分组。如果regex1是
^regex1-1$
,并且regex2具有类似的结构,则可以重构为
^(?:regex1-1 | regex2-1)$