我正在尝试为URL添加preg_match
验证,如:
http://test.com/page/?param1[0=a¶m2[1]=b
如果你在上面的例子中看到少了一个方括号。
我认为您不需要正则表达式。您可以简单地使用parse_url,它将为您进行解析和验证,然后您可以检查每个组件是否符合您的期望。
检查两个正则表达式,可能这对你有用
$website = 'http://test.com/page/?param1[0=a¶m2[1]=b';
if (!preg_match("/'b(?:(?:https?|ftp):'/'/|www'.)[-a-z0-9+&@#'/%?=~_|!:,.;]*[-a-z0-9+&@#'/%=~_|]/i",$website) || !preg_match("/^[^'[']]*+('[(?>[^'[']]|(?1))*+'][^'[']]*+)*$/",$website)) {
echo "Invalid URL";
}else{
echo 'valid';
}
O/p: Invalid URL
这个检查的唯一问题是它只检查括号不平衡,而不是它的位置