ネガティブルックビハインドが期待どおりに機能しない.2番目のグループが文字列をキャプチャしないようにするにはどうすればよいですか?

コードマスター

BT(大文字と小文字を含む)で始まる文字列を拒否したい例-BT444CC

元の正規表現:

^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z] [A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\s?[0-9][A-Za-z]{2})$

正規表現のネガティブルックビハインド:

(?<!([bB][tT]))(^([Gg][Ii][Rr] 0[Aa]{2})|((([A-Za-z][0-9]{1,2})|(([A-Za-z] [A-Ha-hJ-Yj-y][0-9]{1,2})|(([A-Za-z][0-9][A-Za-z])|([A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z]))))\s?[0-9][A-Za-z]{2})$)

しかし、この正規表現はまだ受け入れていBT444CCます2番目のグループはt、これを防ぐ方法をキャプチャしていますか?

WiktorStribiżew

後読みは必要ありません(?![Bb][Tt])文字列の先頭に先読みが必要です。

また、パターン全体をキャプチャしないグループで囲む必要があります。そうしないと、先読みによって最初の前の部分のみが制限され|ます。

使用できます

^(?![Bb][Tt])(?:[Gg][Ii][Rr] 0[Aa]{2}|([A-Za-z][0-9]{1,2}|([A-Za-z][A-Ha-hJ-Yj-y][0-9]{1,2}|([A-Za-z][0-9][A-Za-z]|[A-Za-z][A-Ha-hJ-Yj-y][0-9]?[A-Za-z])))\s?[0-9][A-Za-z]{2})$

正規表現のデモを参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ