特定の文字列以外のすべてに一致する正規表現(ZF2ルーティングで使用されます。phpのpreg_matchを使用すると思います)が必要です。
例:「赤」、「緑」、「青」以外のすべてと一致させる必要があります。
私は現在正規表現を持っています:
^(?!red|green|blue).*$
test -> match (correct)
testred -> match (correct)
red -> doesn't match (correct)
redtest -> doesn't match (incorrect)
最後のケースでは、正規表現が思ったように動作しません。 「redtest」は(「red」、「green」、「blue」)ではないため、「redtest」と一致する必要があります。
正規表現を修正する方法のアイデアはありますか?
文字列アンカーの終わりを先読みに含めることができます
^(?!(red|blue|green)$)
このような正規表現には、2番目のブロックの条件が含まれます-YOUR_REGEXP、最初のブロックの条件が除外されます。この場合、文字列にred、greenまたはblue結果alwaysになるfalse
'(?si)(?!.*(red|green|blue).*)(.*(YOUR_REGEXP).*)'