アイルランドのEircode形式の検証にベストプラクティスがあるかどうか疑問に思っています。これまでのところ、JavaScriptでREGEXを使用した私のベストな試みは、11ページにある公式仕様に基づいた次のものです。ここ。
(文書内のページ番号に基づくと 11 ページ、表紙を含めると 12 ページ)
/^[A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{1}[0-9]{1}[0-9,W]{1}[\ \-]?[0-9,A,C,D,E,F,H,K,N,P,R,T,V,W,X,Y]{4}$/
ここでは Eircode 関連の質問が見つからなかったので、この質問を投稿して他の人の意見を聞き、より優れた/より短い/より効率的なパターンを思いつく人がいるかどうかを確認しようと思いました。
編集: @Asunez の回答に従ってカンマを削除しました。
/^[ACDEFHKNPRTVWXY]{1}[0-9]{1}[0-9W]{1}[\ \-]?[0-9ACDEFHKNPRTVWXY]{4}$/
ベストアンサー1
@Manwal の回答は期待どおりに機能しないため、OP の正規表現を短縮する私の試みを次に示します。
(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
A65 B2CD郵便番号をサポートする更新バージョン -(?:^[AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$
これは基本的に正規表現と同じですが、いくつか変更されています。
[]
カンマを削除しました。括弧内の項目をリストするにはカンマは必要ありません。- 可能で、スペースを節約できる場所に範囲を追加しました (
C-F
、V-Y
)。それ以外の場所では、正規表現が短くならないため、範囲を追加してもメリットはありません。 - スペースをエスケープする必要はありません。正規表現内の " " はリテラルです。
- ダッシュが文字クラスの最後の文字(角括弧)である場合も、ダッシュをエスケープする必要はありません。
- 正規表現の最初の部分は、非キャプチャグループになり、または3 番目の位置で唯一可能な文字である「D6W」の場合に使用します。
後読みのみで処理することも可能ですD6W
が、これは正規表現というよりもむしろ芸術です。
正規表現デモを見る:ここ
文字クラスを反転してない指定された文字を含めます。正規表現が短くなるわけではありませんが、注目に値します。ただし、他の文字 (ドット、カンマなど) も含まれていないことを確認する必要があります。私はトークンを追加することでこれを行います\W
。
あなたはそれを試すことができますここ