Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 匹配不包含坏单词的正则表达式_Php_Regex_Pcre - Fatal编程技术网

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

Php 匹配不包含坏单词的正则表达式,php,regex,pcre,Php,Regex,Pcre,当主题不包含坏单词时,如何进行预匹配传递?这与此相反: $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, "

当主题不包含坏单词时,如何进行预匹配传递?这与此相反:

$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”似乎是不可能的?

您可以使用它

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

如果(!preg_match(…)
-简单。我们有一个用PHP编写的4GL工具,它允许指定一个“validationPattern”属性,在该属性中我们无法反转结果。无论如何,谢谢你的建议。使用匹配功能的唯一原因是实际匹配某些内容。如果你不想匹配一些单词,那么,你想匹配哪些单词?谢谢你的反应。这实际上也匹配了部分单词,比如某天或糟糕。这个模式就是解决方案(基于“标记为重复”问题中的答案):
/^(?(?!\b(一些不好的词)\b)。*$/i
@keesvanderen您的正则表达式将匹配
o'some使用
空格
代替
\b
^((?!\b(some|bad|words)\b).)*$