最初の3文字は、I、O、S、またはZを除く大文字でなければなりません。次にダッシュを3文字以外の4文字にすることができます。これは最初の否定的な先読みでも、最初の捕獲グループの複数のネガティブ先読み
^((?!.*[IOSZ])[A-Z]{3})-((?!.*3)(.{4}))$
たとえば、AAA-444Z
をキャプチャしたいと思います。
最初の3文字は、I、O、S、またはZを除く大文字でなければなりません。次にダッシュを3文字以外の4文字にすることができます。これは最初の否定的な先読みでも、最初の捕獲グループの複数のネガティブ先読み
^((?!.*[IOSZ])[A-Z]{3})-((?!.*3)(.{4}))$
たとえば、AAA-444Z
をキャプチャしたいと思います。
したいので、あなたは、先にあなたの外観から.*
を削除する必要があります3文字を一致させ、キャプチャグループから制限数を外します。ポイントその
^((?![IOSZ])[A-Z]){3}-((?!3).){4}$
注:
^((?![IOSZ])[A-Z]){3}-[^3]{4}$
あなたが先に2つの負の外観を使用したい場合は、以下を使用します。また、最後の部分のために否定文字クラスを使用しますあなたがルックアラウンドを使うとき、パターンが次のものであることを指定したい、あるいは特殊なパターンで先行することを指定したいとき、そしてlinあなたのルックアラウンドベースのパターン全体の制限を考慮する正規表現エンジンを言う必要がある文字の数。第1のものは(?![IOSZ])[A-Z])
であり、第2のものは((?!3).)
である。
あなたは、この正規表現を使用することができるように、この要件のいずれかの先読みを必要としません:
^[A-HJ-NP-RT-Y]{3}-[^3]{4}$
[A-HJ-NP-RT-Y]{3}
はI, O, S or Z
でない大文字の3インスタンスと一致します。[^3]{4}
は、3
以外の文字と一致します。以下のコメントを1としてあなたが本当に使うだけにして、負の先読みにしたい場合:
^(?:(?![IOSZ])[A-Z]){3}-(?:(?!3).){4}$
ありがとう私はメカニズムを理解するために2つの否定的な先読みでこれをしたいと思います – ocram
@ocram編集をチェックしてください。 – Kasramvd
'^((?![IOSZ])([AZ] {3})) - ((?! 3)(。{4}))$'それもやるよ – ocram