28
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バリデーションで使用する正規表現の読み方

Posted at

Form等のバリデーションで使用する正規表現、多くの場合は
Google等でコピペをしてくれば終わりなのですが、
少し読めるようになっておくと、間違い等にも気付きやすくなるかなと思い、
簡単なルールだけまとめてみました。

ルール(メタキャラクタ)

ルール             意味        
^  文の始め
 文の終わり
. 任意の1文字
[大括弧囲み] いづれか1文字
-(マイナス) 範囲
[ ^ ](大括弧+^) 指定クラスの否定
(縦線) または    
* 直前の1文字の0回以上の繰り返し
+ 直前の1文字の1回以上の繰り返し
? 直前の文字の0回または1回だけの登場を表現
( )(小括弧) 一つのまとまり、グループ
\ メタキャラクタの意味の打ち消し

またperlでは以下も使えます。

ルール        意味        
\s  空白文字1文字
\w  英数字または「_」のうち1文字
\d  数字1文字

具体例

^abc  の場合は、文頭がabcいづれかを指します。

[a-c][abc] は、同じ意味で、半角のaからcまでのいづれか1文字とマッチします。

abc+  は、 abcの1回以上の繰り返しにマッチするため,ab にはマッチしません。
     abc abcc abccc などにマッチします。

abc*  は、 abcの0回以上の繰り返しにマッチするため
      ab abc abcc abccc abccccなどにマッチします

abc?  は、 1回だけを表現するため、ab abc にしかマッチしません

「^0-9」 は、[]で半角数字以外の任意の1文字にマッチ、^でクラスの否定なので
     「半角数字以外の1文字」とマッチします。abcや漢字やひらがなもマッチします。

(abc)+ は、abcをグループとし、1回以上の繰り返しにマッチするため
      abc abcabc abcabcabc などとマッチします。

実践編(数字)

少しわかりづらいので
バリデーションでよく使うものを見ていきましょう。

全て数値(半角)

/^[0-9]+$/

文頭から半角数字の0-9までのいづれか1文字(^[0-9])を
1回以上の繰り返しで文末まで(+$)となるため、
全て半角の数字にマッチします。

全て数値(全角,半角)

/^[0-90-9]+$/

全角と半角の両方の数字をマッチさせたい場合は
[]のなかに全角と半角の全ての数字を入れ([0-90ー9])
文頭(^)から文末($)まで1文字ずつ繰り返し行うこと(+)でマッチできます。

半角アルファベット(大文字・小文字・数値)

 /^[a-zA-Z0-9]+$/

さらに半角アルファベットも加えたい場合はこのようになります。

電話番号(ハイフンなし10桁)

/^\d{10}$/

数字1文字を10文字分(\d{10})という形になります。

e-mailの場合

/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/

いきなり難しくなったって?
そんなことはありません。

/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+ 
 @[a-zA-Z0-9-]+ 
 (?:\.[a-zA-Z0-9-]+)*$/

このように3つに分解することができ、
この意味正規表現の意味は、「何かしらの文字**@英数字.**英数字」です。

最初の[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+は全ての文字を表し、
@以降は、英数字の繰り返し([a-zA-Z0-9-]+)
.以降は、英数字の繰り返し([a-zA-Z0-9-]+)を(?:)でクループ化し、*$で文末まで指定しただけです。

.を入力する際には、打ち消しとして
バックスラッシュ\を入れる必要があるので(.)複雑に見えてしまうんですね。

まとめ

正規表現の見方について、まとめてみましたが、 実際には、様々な数字や文字が入ることもあるので、 下記サイトのようなもので、最終チェックをした方がよさそうです。

28
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
38

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?