/ /正規表現を使用して特定のパターンに一致させる-php、regex、preg-match

regexを使って特定のパターンにマッチさせる - 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は1

ネガティブ先読みを使用できます。

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

本当に境界を使用したい場合は、これを試してください、

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

デモ

更新:

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

(?!.*false[12]b) 文字列にサブ文字列ではなく任意の文字が含まれることをアサートする負の先読み false1 または false2 文字列で終わる必要があります true、それが追加された理由です true$ 最後に。