我知道有很多主题显示正则表达式来验证URL。还有一个FILTER_VALIDATE_URL函数,我也知道。
我想知道我的正则表达式错误,以了解它的错误。
我的RegularExpression应该在其前面使用http://或https://匹配网址。之后,它可以是任何角色,一个或多个。它应该以一个点结束,然后是一个包含2到5个字符的字符串a-z。
$s = preg_match('^(http|https)://.+(\.[a-z]{2,5})$', $url);
我在http://regexpal.com/上尝试了这个RegularExpression。它匹配正确,但我的preg_match调用总是假的。任何人都可以向我解释这个RegularExpression的错误吗?
非常感谢
答案 0 :(得分:3)
在PHP中,您需要在正则表达式语法中使用分隔符。分隔符可以是任何非字母数字,非反斜杠,非空白字符。大多数人使用/
作为分隔符,但由于这显示在您的网址中,您可以使用其他字符,例如#
以避免转义:
'#^(http|https)://.+(\.[a-z]{2,5})$#'
旁注:(http|https)
将被捕获,因为它包含在括号中。你真的不需要这个,但只需编写https?
也更简单,?
使s
成为表达式中的可选字符。