使用正则表达式匹配特定模式

时间:2015-10-21 02:10:44

标签: php regex preg-match

我试图匹配任何不以" false1"开头的字符串。或" false2",并以true结尾,但正则表达式由于某种原因不匹配。我做错了什么?

$text = "start true";
$regex = "~(?:(^false1|false2).+?) true~";
if (preg_match($regex, $text, $match)) {

echo "true";    

}

预期结果:

true

实际结果:

null

1 个答案:

答案 0 :(得分:1)

您可以使用否定前瞻。

^(?!false[12]).*true$

如果你真的想使用边界,那就试试吧,

^(?!false[12]\b).*\btrue$

DEMO

更新

^(?!.*false[12]\b).*\btrue$

(?!.*false[12]\b)否定前瞻,断言字符串将包含任何字符,但不包含子字符串false1false2,并且必须以字符串true结尾,这是为什么我们最后添加了true$