匹配不包含坏词的正则表达式

时间:2018-12-24 21:24:36

标签: php regex pcre

当主题不包含不良词时,如何通过preg_match?这是相反的:

$pattern = '/\b(some|bad|words)\b/i';

function matches($pattern, $value) {
    echo "matches $pattern: $value, matches: " . preg_match($pattern, $value)."\n";
}

matches($pattern, "This should match");
matches($pattern, "This bad string should not match");

到目前为止,我发现的所有示例都相反:当主题包含不良单词时,它们匹配。

当它不包含坏词时,我希望它匹配。

尝试了几种组合和搜索,但找不到解决方案。使用'?!' '\ b'似乎不可能?

3 个答案:

答案 0 :(得分:0)

^((?!\b(some|bad|words)\b).)*$

答案 1 :(得分:-1)

您可以使用此

^((?!some|bad|words).)*$

Demo

答案 2 :(得分:-1)

如果您将preg_match()的结果用作标志,并且您很在意
关于不是在字符串中包含坏词,那么最快的方法是

^(?!.*\b(some|bad|words)\b)

扩展

 ^                             # BOS
 (?!                           # Negative lookahead, a pseudo atomic group
      .* \b 
      ( some | bad | words )        # (1)
      \b 
 )
相关问题