PHP:正则表达式:匹配如果不包含

时间:2014-10-29 13:52:41

标签: php regex

我有两个网址(下方)。我需要匹配那些不包含"故事"参与其中。我知道我需要使用负面看/后面,但我不能让我的生活让它工作

网址

news/tech/story/2014/oct/28/apple-iphone/261736

news/tech/2014/oct/28/apple-iphone/261736

当前正则表达式

news\/([a-z0-9-\/]{1,255})(\d{4})\/(\w{3})\/(\d{2})\/([a-z0-9\-]{1,50})\/(\d{1,10})

示例:

http://regex101.com/r/jC7jC4/1

3 个答案:

答案 0 :(得分:1)

您可以像这样使用否定前瞻

(?!.*\bstory\b)news\/([a-z0-9-\/]{1,255})(\d{4})\/(\w{3})\/(\d{2})\/([a-z0-9\-]{1,50})\/(\d{1,10})

RegEx Demo

(?!.*\bstory\b) 否定前瞻如果网址中有story字词,则会停止匹配。

答案 1 :(得分:1)

你可以尝试这个:

news\/(([a-z0-9-\/](?!story)){1,255})(\d{4})\/(\w{3})\/(\d{2})\/([a-z0-9\-]{1,50})\/(\d{1,10})

答案 2 :(得分:1)

如果您不必使用正则表达式

,可以使用strpos()进行检查
 if (strpos($url, 'story') === false