0

我知道有很多主题显示正则表达式来验证 URL。还有一个 FILTER_VALIDATE_URL 函数,我也知道。

我想知道我的正则表达式有什么问题,以了解它有什么问题。

我的正则表达式应该匹配 URL 的前面有 http:// 或 https://。之后,它可以是任何字符,一个或多个。它应该以一个点结尾,然后是一个包含 2 到 5 个字符 az 的字符串。

        $s = preg_match('^(http|https)://.+(\.[a-z]{2,5})$', $url);

我在http://regexpal.com/上尝试了这个正则表达式。它匹配正确,但我的 preg_match 调用总是给我错误的。谁能向我解释这个正则表达式有什么不正确的地方?

非常感谢你

4

1 回答 1

3

在 PHP 中,您需要在正则表达式语法中使用分隔符。定界符可以是任何非字母数字、非反斜杠、非空白字符。大多数人将/其用作分隔符,但由于它出现在您的 URL 中,因此您可以使用其他字符,例如#避免转义:

'#^(http|https)://.+(\.[a-z]{2,5})$#'

旁注:(http|https)将捕获,因为它被包裹在括号中。您实际上并不需要它,但只需编写 也更简单https?,其中?使s表达式中的可选字符。

于 2013-03-16T14:07:32.807 回答