我有这个URL的正则表达式
"^(((https?|ftp|file|)://)|(www))[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|]$"
除了一个
之外,我的几乎所有测试场景都有效"www.foo" <---WRONG this url it's not valid for my system
"www.foo.com" <--- valid
"www.blah.net" <--- valid
"http://blah.com" <--- valid
"https://blah.com" <--- valid
是否有人可以帮助我改进正则表达式
答案 0 :(得分:4)
我不推荐这个。
例如, www.foo
可以是有效的本地主机名。
无论如何。让System.Uri
通过其众多属性进行艰苦的工作并访问各个部分
答案 1 :(得分:1)
每个有效网址的正则表达式
<?php
function validateURL($val) {
$pattern_1 = "/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
$pattern_2 = "/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
$pattern_3 = "/^(([A-Z0-9][a-zA-Z0-9_-]*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
$pattern_4 = "/^(([A-Z0-9][a-zA-Z0-9_-]*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se*)+.(co|in|com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i";
if(preg_match($pattern_1, $val) || preg_match($pattern_2, $val) || preg_match($pattern_3, $val) || preg_match($pattern_4, $val)){
return true;
} else{
return false;
}
}
$url = "google.com.in";
echo validateURL($url);
?>