はじめに
よく使う正規表現を備忘録としてまとめてみました。
Java前提ですが、他の言語でも応用可能かと思います。
主にBeanValidatorのPatturnで使用することを想定しているため、既に存在しているもの(EmailやURLなど)はここでは扱いません。
半角数字
^[0-9]*$
半角英字
^[A-Za-z]*$
半角記号(半角スペース含む)
^[ -/:-@[-`{-~]*$
半角英数字
^[0-9A-Za-z]*$
半角英数記号(半角スペース含む)
^[0-9A-Za-z -/:-@[-`{-~]*$
ひらがな(空白含む)
^[ぁ-んー\s]*$
カタカナ(空白含む)
^[ぁ-んー\s]*$
郵便番号(ハイフン含む)
[0-9]{3}\-[0-9]{4}
郵便番号(ハイフン含まない)
[0-9]{7}
郵便番号(ハイフン任意)
[0-9]{3}\-?[0-9]{4}
フォルダ名(ドライブ名含む絶対パス)
フォルダ名やファイル名として使用できない文字は、\ : < > | " * /
フォルダ区切りは \(正規表現では\\)
ドライブは :
それらを踏まえて文字列を組み立てています。
^[a-zA-Z]\:\\(([^\\\:\<\>\|\"\?\*\/]+\\)*[^\\\:\<\>\|\"\?\*\/]*)?$
フォルダ名(ドライブ名、ネットワーク含む絶対パス)
ネットワーク上のフォルダは\\(正規表現では\\\\)で始まる。
それ以外のルールは上記通り。
それを踏まえて文字列を組み立てています。
^([a-zA-Z]\:\\|\\\\)(([^\\\:\<\>\|\"\?\*\/]+\\)*[^\\\:\<\>\|\"\?\*\/]*)?$
フォルダ名(ドライブ名含まない絶対パス、相対パスも含む)
^([a-zA-Z]\:\\|\\\\|\\)?(([^\\\:\<\>\|\"\?\*\/]+\\)*[^\\\:\<\>\|\"\?\*\/]*)?$
ディレクトリ名(windows以外 絶対パス)
Linuxなどは、ファイル名に含められる文字の範囲は広く、/ とNUL[0x00] 以外は使えます。
ここではとりあえずNULは無視し可視文字を対象としていますので、/ 区切りの文字列という構成にしています。
^\/([^\/]+\/)*[^\/]*$
ディレクトリ名(windows以外 相対パス含む)
相対パスを含むので、最初の文字 / は任意、という表現になっています。
^\/?([^\/]+\/)*[^\/]*$
ファイル名(Windows)
^[^\\\:\<\>\|\"\?\*\/]*$
ファイル名(Windows以外)
^[^\/]*$
パスワード(半角英数記号、英大文字、英小文字、数字、記号のうち3種必須、8文字以上)
^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])|(?=.*[a-z])(?=.*[A-Z])(?=.*[ -\/\:-@\[-`\{-~])|(?=.*[A-Z])(?=.*[0-9])(?=.*[ -\/\:-@\[-`\{-~])|(?=.*[a-z])(?=.*[0-9])(?=.*[ -\/\:-@\[-`\{-~]))([a-zA-Z0-9 -\/\:-@\[-`\{-~]){8,}$
パスワード(英大文字、英小文字、数字、記号すべての種類必須、8文字以上)
^((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[ -\/\:-@\[-`\{-~]))([a-zA-Z0-9 -\/\:-@\[-`\{-~]){8,}$
半角の整数
`(+|-)?[0-9]+$
半角数値(".9" なども許容)
`((+|-)?[0-9]+)?(¥.[0-9]+)?$
BASE64形式
^([0-9A-Za-z\+\/]{4})*([0-9A-Za-z\+\/]{3}\=|[0-9A-Za-z\+\/]{2}\={2})?$