使用javascript和php验证URL
我只想验证以下两种格式的url 和 www.XYZ.com 我还需要Javascript和PHP中的验证脚本。 提前谢谢。雷格克斯就像冠军一样 你可以自己写一个,下面是一个简单的例子:使用javascript和php验证URL,php,javascript,Php,Javascript,我只想验证以下两种格式的url 和 www.XYZ.com 我还需要Javascript和PHP中的验证脚本。 提前谢谢。雷格克斯就像冠军一样 你可以自己写一个,下面是一个简单的例子: (https?://)?.+$ 通过谷歌搜索,我发现了一些更为特殊的东西,在更严格的验证方面: ^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'
(https?://)?.+$
通过谷歌搜索,我发现了一些更为特殊的东西,在更严格的验证方面:
^(https?://)?(([0-9a-z_!'().&=$%-]: )?[0-9a-z_!'().&=$%-]@)?(([0-9]{1,3}\.){3}[0-9]{1,3}|([0-9a-z_!'()-]\.)([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.[a-z]{2,6})(:[0-9]{1,4})?((/?)|(/[0-9a-z_!*'().;?:@&=$,%#-])/?)$
资料来源:
(显然,测试复制和粘贴的正则表达式,就像测试任何复制粘贴的代码一样)
如果您不知道如何在PHP中使用正则表达式,那么它非常简单:
$valid = preg_match($pattern, $urlOrStringToValidate);
其中$pattern=“/(https?:/)?.+/”或类似内容,在/和之间/
Javascript在字符串类型上有一个名为match的对象方法
var urlString = "http://www.XYZ.com";
var isValidURL = urlString.match(/(https?:\/\/)?.+/);
最好使用正则表达式来执行此操作。大概是这样的:
^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?
您可以在PHP中使用函数使用正则表达式,在JavaScript中使用match()
函数使用正则表达式
例如(Javascript)
使用。另一件我忘了提到的事情,正则表达式只会验证URL的良好格式。通过向url发送AJAX请求(Jquery:$.AJAX({url:urlToTest,error:function(){alert(“无效url”);}}),您实际上可以看到这些url是否有效;类似地,您可以使用curl或gethostbyname()测试。但是!我测试url的实际有效性的经验非常烦人。例如,服务器响应时间太长,导致ajax失败,或者主机名是ip地址……处理起来真是一件痛苦的事情。上面的条件将对下面两种条件都有效?www.xyz.com,上面的条件将对下面两种条件都有效?www.xyz.com,我相信是这样。我没有正确地测试表达式。你只需要在谷歌上搜索一个适合你需要的表达式,然后应用它。或者那样,或者编写一个完全适合你需要的表达式。
function validateUrl(url)
{
var pattern = '^((ht|f)tp(s?)\:\/\/|~/|/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((/?\w+/)+|/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?';
if(url.match(pattern))
{
return true;
}
else
{
return false;
}
}