メールアドレスにマッチさせる
さて、ここからは、実際に正規表現を組み立てます。
一回目は、メールアドレスにマッチさせましょう。
^[a-zA-Z].*@[\.-_a-zA-Z0-9].+\.[a-zA-Z]+$
こんな感じにしてみました。開設すると、
アルファベットで始まり、任意の文字が続き、@が挟まって、その右に英数字と「.-_」の記号の羅列が1文字以上あり、「.」があり、任意のアルファベットで終わるということですね。
さて、ここからは、実際に正規表現を組み立てます。
一回目は、メールアドレスにマッチさせましょう。
^[a-zA-Z].*@[\.-_a-zA-Z0-9].+\.[a-zA-Z]+$
こんな感じにしてみました。開設すると、
アルファベットで始まり、任意の文字が続き、@が挟まって、その右に英数字と「.-_」の記号の羅列が1文字以上あり、「.」があり、任意のアルファベットで終わるということですね。
電話番号にマッチさせるのは、ちょっと難しいです。それは、市外局番、市内局番を分けるハイフンの位置が異なるからです。
携帯番号にマッチ
^0[1-9]0-[0-9]{4}-[0-9]{4}$
【解説】0数字0で始まり、ハイフン、数字4桁、ハイフン、数字4桁で終わる形です。
一般回線にマッチ
ハイフンがない形式なら簡単です。
^0[0-9]{9}$
【解説】
0で始まって、9桁の数字が続く
ハイフンが必要
^0[0-9]{1,4}-[0-9]{1,4}-[0-9]{4}$
【解説】
0から始まり、4桁以内の数字の後にハイフン、その後に1~4桁の数字、ハイフン、4桁の数字となります。しかしながら、この場合、2桁-1桁-4桁でもマッチしてしまいます。実際に使うときには、上記の表現と、{12}(全部で12文字)と2種類ともマッチさせて使うのが良いかと思います。
ホームページのアドレスとマッチさせる正規表現を考えます。
http://[a-z]?[a-z0-9]*\.[a-z]+[\\\.-_&?=%a-zA-Z]*$
【解説】
http://で始まり、小英字から始まり、小英数字が並び、ドットを挟んで、小英字でドメインを構成
後半は、URLで使われる記号「\.-_/」とGETなどで使う「&?=%」、更に英数字で構成されることを示してる。
ファイル名の拡張子にマッチさせてみましょう。
例えば、画像ファイル、jpg、gif、bmpのファイルにマッチさせます。
【(\.gif|\.jpg)$】
これは、元のファイル命の最後の部分($)が、指定されたテキストであるかどうかを調べています。実際には、拡張子を【|】で区切って沢山書くことが出来ますし、もちろん画像でなくとも必要な形式に書き換えればよいのです。
郵便番号にマッチする正規表現は
【^[0-9]{3}-[0-9]{4}$】
のようになります。数字が3桁と、ハイフン、そして数字が4桁。比較的簡単ですね。
ファイルネームから、拡張子だけ知りたいときがあります。
ファイルネームが、指定の拡張子かどうか調べるには、
【(\.gif|\.jpg)】のように【|】で区切った拡張子を記入していけばOKです。
また、拡張子を取り出したい場合は、
【\..*】をプログラム上で処理します。PHPの場合は、【ereg("\..*",$filename,$res)】のように使うと、変数$res[0]に拡張子が入ります。ドット以降の文字列を取得するだけの正規表現ですが、ファイルネームに拡張子以外のドットが含まれるといったことが無ければ、これで大丈夫です。ファイルネームが、ディレクトリなどを含む場合は、basename($filename)としておけば純粋にファイル部分だけが取り出せます。
原文に改行が含まれる場合、mオプションが必要なときがあります。perl系の正規表現では必須です。行単位で行数回数のマッチを試みるからです。これは複数行のテキストエリアの入力の場合に、注意が必要です。PHPで言うなら、eregの場合は動いてもpreg_matchだと動かない場合があるということです。気をつけましょう。
例えば、文字数だけの場合'/^.{1,100}$/m'のような感じです。こうすることで、複数行にまたがります。複数テキストボックスからの入力から正規表現を使う場合は注意しましょう。
英文の場合、単語の途中で改行は一般的にしないで、行単位を基本にした方が、都合が良いのでしょう。