PHP正则表达式匹配除Example.com之外的任何URL

时间:2010-03-01 20:02:43

标签: php regex url pattern-matching

提供伪正则表达式的示例:根据PHP regexp语法匹配除example.com和example2.com之外的每个url。

这是我到目前为止所做的,但它不起作用:

$patternToMatch = "@https?://[^(example.com|example2.com)]\"*@i";

4 个答案:

答案 0 :(得分:2)

不要将正则表达式用于不需要的东西。

$parts = parse_url($url);
if ($parts && $parts['host'] != 'example.com' && $parts['host'] != 'example2.com') {
    // the URL seems OK
}

答案 1 :(得分:1)

这里的问题是,在类定义([])中,(|等特殊字符会失去意义。

更好的解决方案是在example.com或example2.com上匹配,然后仅进行否定测试。

答案 2 :(得分:1)

不,方括号之间的所有内容都只匹配一个字符。例如正则表达式:

[^example]

将匹配除examp,{{1}以外的任何单个字符}和l

尝试否定lookahead

e

答案 3 :(得分:0)

你几乎得到了答案。 这将进行您想要的匹配。

$patternToMatch = "@https?://(example.com|example2.com)@i";