当包含某些单词时正则表达不匹配url?

时间:2017-12-20 14:13:06

标签: php regex

我不希望我的正则表达式在包含.premium-时与网址匹配。

当然,我在这个论坛和其他人上尝试了很多组合。

最明显的是:

<a[^>]*href="(https://www.example.com/(?!\.premium\-)[^"']+)"[^>]*>

但这不起作用。我该怎么办?

1 个答案:

答案 0 :(得分:0)

你非常接近。你错过了O(l)。负向前瞻被绑定到您将其放置在模式中的位置,因此它不会超过字符串中的确切位置。你需要量化某些东西来告诉它从那个位置看任何地方。

此外,当[^"']*不在集合中时,您无需转义,因此使用-就足够了。

代码

See regex in use here

\.premium-

说明

我只是将<a[^>]*href="(https://www.example.com/(?![^"']*\.premium-)[^"']+)"[^>]*> 添加到您的负向前瞻的最前端。这样可以确保它在需要时继续,直到满足匹配(在负前瞻中)。