header

正規表現でメールアドレスかどうかチェックする

(1/3)

正規表現は、入力値をチェックすることもできる。
Webプログラムでは、悪意のあるユーザーが XSS (クロスサイトスクリプティング)SQLインジェクション を仕掛けてくることがある。その対策として、入力値チェックは必要不可欠だ。
今回は、入力された文字列がメールアドレスかどうかチェックするプログラムを紹介する。

メールアドレスで使える文字

メールアドレスの書き方は、RFC 2282 Internet Message Format和訳】に定義されている。
しかし、これを定義通りに解釈するとURLより複雑になってしまう。そこで、実用上差し支えない程度に簡略化し、正規表現で表したのが下記である。

/[0-9a-z!#\$%\&'\*\+\/\=\?\^\|\-\{\}\.]+@[0-9a-z!#\$%\&'\*\+\/\=\?\^\|\-\{\}\.]+/

となる。順に説明していこう。

今回使った正規表現

?
直前1文字の0または1回の繰り返し。
ここでは、http, https の両方にマッチする。
[ ]
文字クラス。
この中に記述された文字の並びのうちの1文字を表す。
-
文字の範囲指定。
a-z はアルファベット小文字すべてに、A-Zはアルファベット大文字すべてに、0-9は数字すべてにマッチする。
+
直線1文字の1回以上の繰り返し。
ここでは、文字クラス[...]に記述された文字、いずれかの1回以上の繰り返し――すなわち、URL 文字列にマッチすることになる。
\
エスケープ。この直後の1文字自身を指す。
直後の1文字が正規表現の特殊文字(メタキャラクタ)である場合に用いる。

この正規表現を使ったサンプル・プログラムを次のページに掲載する。

(この項つづく)