開発ブログ

WWWクリエイターズが送る、Git、CSS、HTML、コマンドライン、Macの便利機能など、開発に関する役立ち情報発信します。気まぐれに更新。

正規表現:全角/半角数字と、N 桁の数字の表現方法、まとめ。

最終更新:2017-09-29 by Joe

正規表現を使った「数字」のマッチング方法と、数字の2桁、3桁、4桁・・、と桁数を限定したマッチング表現をまとめました。

数字の正規表現

数字(半角)1文字

文字クラスを利用すると数字文字に限定した表現が可能です。

// 文字クラスを使った数字の表現
[0-9]

数字(全角)の1文字

同様に、文字クラスを使って表現可能です。

// 文字クラスを使った数字の表現
[0-9]

 数字(全角、半角)の1文字

文字クラスで「or」を用います。

// 文字クラスを使った数字の表現
[0-9|0-9]

また、エスケープシーケンス「\d」を使った表現は便利です。これにより、「全角、半角いずれかの数字1文字」を表す事ができます。

// エスケープシーケンスを使った数字の表現
\d

ちなみに「\」と大文字にすると「半角数字、全角数字以外の1文字」を表すこともできます。ご参考まで

// 半角数字、全角数字以外の1文字 
\D

[応用] 量指定子を使って、数字の桁数を指定する

さて、上記では「1文字の数字」を表現しましたが、量指定子「{n}」とを組み合わせると、特定の桁数の数字を表すことができます。(Vimでの量指定子は記法が異なりますので、こちら「正規表現:特殊文字(メタ文字)の一覧」を御覧ください)

n桁の数字

文字クラスで半角数字のいずれか、量指定子で具体的な文字の数を書きます。例えば、これで4桁の数字を表せます。

// 4桁の数字
[0-9]{4}

n桁以上の数字

量指定子は便利で、繰り返しの数「〜以上〜以下」といった表現が可能です。

// 4桁以上の数字
[0-9]{4,}

n桁以上、n桁以下の数字

// 4桁-8桁の数字
[0-9]{4,8}

n桁以下の数字

上記の表現から推測がつくと思いますが、上限を設定することもできます。

// 8桁の数字
[0-9]{,8}

量指定子については、こちらのまとめましたので、ぜひご覧ください。

[応用] 数字を含む複雑な文字列を表現する

さて、数字だけでなく、数字を含む文字列をうまく表現する例をいくつか紹介します。説明の簡単のため、すべて半角数字という事にしますね。

特定の大きさの範囲の数字

特定の大きさの数字を、範囲を指定して探します。正規表現のみでは、数字の大小は比較できないので、桁ごとに文字列を区切って探します。

// 2000 以上、2016 以下の数字
20[01][0-6]

国内で有効な携帯電話番号の数字

上記の応用です。フォームに入力された文字列のバリデーションに利用できる、かもしれませんね。

// 携帯電話番号。ハイフンを利用しても、しなくてもどちらでも良い。
0[89]0-?[0-9]{4}-?[0-9]{4}

両指定子「?」は、0〜1回の出現にマッチしますので、ハイフンがあるもの、無いもの、いずれもマッチすることができます。

 

以上、数字の表現に関してでした。

量指定子をうまく利用し、また、対象にしている数字の桁数や、他の文字の出現の仕方をうまく捉えることで、柔軟なマッチングが可能になると思います。

参考情報

参考情報をまとめておきます。

正規表現の量指定子

今回利用した、量指定子についてまとめておきます。いったん覚えてしまうとスラスラ書けるようになるでしょう。

量指定子(最長一致)最短一致意味
**?直前のパターンの0回以上連続
++?直前のパターンの1回以上連続
???直前のパターンの0回か1回の出現
{N} - 直前のパターンのN回の連続
{min,}{min,}?直前のパターンのmin回以上の連続
{,max}{,max}?直前のパターンのmax回以下の連続
{min,max}{min,max}?直前のパターンのmin回からmax回の連続

そのほか、特殊文字に関してはこちらの記事もぜひ、ご覧ください。

 

 

 

閉じる