正規表現
creatus

正規表現でよく使うメタ文字を使った簡単な処理

はじめに

正規表現でよく使うメタ文字で紹介したメタ文字を使い、簡単な正規表現を書いてみました。

郵便番号

・「数字」を3回繰り返した後「-」を挟んで「数字」を4回繰り返す。
・「数字」を4回繰り返した後「$」が入っているため、「-」含めて合計8桁である。

[0-9]{3}-[0-9]{4}$
入力値 結果         備考  
000-1111
0001111 × 「-」が入っていないため
00-1111 × 「-」前の数字が3つで無いため   
987-6543
111--2222 × 「-」が1つで無いため

メールアドレス

RFC規定のメールアドレスを作ろうとしますと、すごく長く複雑(下記リンク参照)になってしますので、キャリアメールなどで、設定出来る簡単なメールアドレスの正規表現を紹介させて頂きます。

・@前までに半角英数字記号(.-_)を使用できます。
・@前に「.」を使うことは出来ません。
・@後最初の「.」まで半角英数値のみ使用できます。
・連続ドット入力可能

[0-9a-zA-Z.\-_]*(?!\.).@([0-9a-zA-Z])+.[0-9a-zA-Z.\-]+$
入力値 結果         備考  
aa@aa.test
Test..a@aa.test.test                 
test.@aa.test × 「@」の前「.」が入っているため  
.001@aa.com
aa.test × 「@」が入っていないため
aa@aa × 「@」の後に「.」が入っていないため

下記のサイトに99%のEmail Addressに対応できる正規表現が書いてあります。
興味のある方は見てみてください。(別サイトに飛びます)
http://emailregex.com/

日付

・「1356789」、月の場合「1-31」まで入力可能
・「469」月の場合「1-30」まで入力可能
・11月の場合「1-30」まで入力可能
・12月の場合「1-31」まで入力可能
・2月の場合「1-29」まで入力可能

(^[1356789]([1-9]|[12][0-9]|[3][0-1]))$|(^[469]([1-9][12][0-9]|30))$|(^11([1-9]|[12][0-9]|30))$|(^12([1-9]|[12][0-9]|[3][0-1]))$|^2([1-9]|[12][0-9])$
入力値 結果         備考  
11
131                 
1311 × 13月は存在しないため  
1111  
40 40月または、4月0日は存在しないため
631 × 6月31日は存在しないため 
229
230 × 2月30日は存在しないため

MMdd方式(月と日付を2桁に揃える)にしたい場合は1桁の数字の前に「0」をつけることで、出来ます。

(0[1356789](0[1-9]|[12][0-9]|[3][0-1]))$)

まとめ

この他にも、正規表現を使って電話番号や、半角チェック、大文字小文字チェック、既定の入力文字チェックなどいろいろな事が出来ます。
また、メタ文字は紹介したもの以外にも便利な物がたくさんあります。(「\d」で半角数字を全て許容でき、「\D」と書くことで半角数字以外を全て許容出来るなど。)
ぜひ興味がある方は調べてみてください。