正規表現の勉強がてら、見つけ出したい文字列ごとに、正規表現をまとめました。
整数(10進数)
-
^\d+$
- 整数を検索する最も簡単な正規表現です。なお、
\d
は[0-9]
と同じです。
- 整数を検索する最も簡単な正規表現です。なお、
-
^[+-]?\d+$
- 数字の前に符号がついていてもマッチします。
-
^[+-]?(?:[1-9]\d*|0)$
- 001のように数値の前に0がある場合を除外したものです。
整数(2進数、8進数、16進数)
-
^[0-9a-fA-F]+$
- 16進数です。大文字のみマッチさせるなら
^[0-9A-F]+$
です。
- 16進数です。大文字のみマッチさせるなら
-
^(?:0[xX])[0-9a-fA-F]+$
- 接頭辞がついたもののみをマッチさせます。
-
^[+-]?(?:0[xX])?[0-9a-fA-F]+[hH]?$
- 16進数全てに対応したもの。
-
^[+-]?(?:(?:0[xX])?[0-9a-fA-F]+|[0-9a-fA-F]+[hH])$
- 上記のものだと、16進数の前後に接頭辞と接尾辞の両方がついていてもマッチしてしまうので、それを弾いたものです。
-
^[01]+$
- 2進数です。
-
^[0-7]+$
- 8進数です。
実数
-
^\d+(?:\.\d+)?$
- 最も単純な正規表現。
-
^[+-]?(?:\d+\.?\d*|\.\d+)$
- 0省略あり、符号があっても判定可。
-
^[+-]?(?:[1-9]\d*|0)(?:\.\d+)?$
- 整数部分について数値の前に0がある場合を除外したもの。
-
^[+-]?(?:[1-9]\d*|0)(?:\.\d*[1-9])?$
- さらに、小数部分も0で終わることを禁止したもの。
実数(指数表記)
-
^[+-]?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?$
- 0省略なし。
-
^[+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?$
- 0省略あり。
郵便番号
-
^\d{3}-\d{4}$
- -の省略を許すなら、
^\d{3}-?\d{4}$
- -を書かないなら、
^\d{7}$
- -の省略を許すなら、
携帯電話番号
-
^0[7-9]0(?:-\d{4}){2}$
- -の省略を許すなら、
^0[7-9]0(-?)\d{4}\1\d{4}$
- -の省略を許すなら、
IPv4
^((25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)$
日付
-
^\d{4}([\/-])(?:0[1-9]|1[0-2])\1(?:0[1-9]|[12]\d|3[01])$
- yyyy/mm/dd もしくは yyyy-mm-ddの形式。
-
^\d{4}\/(?:0?[1-9]|1[0-2])\/(?:0?[1-9]|[12]\d|3[01])$
- 頭の0の省略を許す。(/区切り)
-
^\d{4}\/(?:(?:0[13578]|1[02])\/(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)\/(?:0[1-9]|[12]\d|30)|2\/(?:0[1-9]|[12]\d))$
- より厳密に。(yyyy/mm/ddの形式)
時間
^(?:2[0-3]|[01]\d)(?::(?:[0-5]\d)){2}$
参考