[英]PHP Regular Expression To Match Any URL Except Those From Example.com
提供伪正则表达式的示例:根据PHP regexp语法,匹配来自example.com和example2.com的所有URL。
这是我到目前为止的内容,但是不起作用:
$patternToMatch = "@https?://[^(example.com|example2.com)]\"*@i";
不要对不需要的东西使用正则表达式。
$parts = parse_url($url);
if ($parts && $parts['host'] != 'example.com' && $parts['host'] != 'example2.com') {
// the URL seems OK
}
这里的问题是在类定义( []
)中,特殊字符(
和(
|
失去了意义。
更好的解决方案是在example.com或example2.com上进行匹配,然后仅对阴性测试进行。
不,方括号之间的所有内容都只能匹配一个字符。 例如正则表达式:
[^example]
将匹配e
, x
, a
, m
, p
, l
和e
以外的任何单个字符。
尝试负前瞻 :
@https?://(www\.)?(?!example2?.com)@i
您几乎得到了答案。 这将完成您想要的匹配。
$patternToMatch = "@https?://(example.com|example2.com)@i";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.