文字列が指定の形式か判定したい

概要

メールアドレスのように文字列が指定の形式かやフォーマット通りになっているかを判定する方法についてまとめます.主に正規表現によるフォーマットの一致確認についてになります.
Facebookシェア Twitterツイート LINEで送る このエントリーをはてなブックマークに追加
この章を学ぶ前に必要な知識
0
条件
  • 確認したい文字列とフォーマットを決めた文字列
効果
  • 入力文字列が入力フォーマット文字列を守っているかを確認する
ポイント
  • フォーマット文字列は正規表現で記述
  • 多くのプログラムは「正規表現」の関数をライブラリと一緒に提供している

解 説

通常の文字列検索ではフォーマットが正しいかどうかを確認することはできません. それらの文字列検索ではキーとなっている文字列と一言一句一致することを求めているためです. 正規表現を使用することで、もっと柔軟な文字列の一致を確認することができるようになります. 正規表現では、文字列がどういう風に変わりうるかを記述することができ、一部自由な文字列が続いてもよいとような指定もするができます. 通常の言語では正規表現をライブラリで提供しており、Unixのコマンドであるgrepなどでも正規表現を使用することが可能です. 正規表現はオートマトンの形式で記述することができ、オートマトンから正規表現に戻すことも可能です.正規表現をオートマトンに変換すれば、実装も容易です.
文字列が指定の形式か判定したいときの導入
正規表現記号 意味
^ 先頭が後続する文字に一致する ^aaaa : aaaaの先頭の文字列がOK
$ 先頭が前方の文字に一致する xxxx$ : xxxxが末尾の文字列がOK
. 任意の1文字が入る aaa.bbb : aaafbbbやaaa5bbb等どんな値もOK
* 前の一文字が0文字以上繰り返し abc* : ab, abc, abcc, abccc...がOK

上記のような表現を用いることで正規表現を構成します.

正規表現の表現例

1.Emailの正規表現例

emailなどはwebサーバ側でフォーマットが正しいかを確認する必要があります. しかし、それを何とか正規表現なしで確認するのはかなり難しいため、通常は正規表現で確認します. 余談ですが、メールのフォーマットでは、 "username+aaa@hoge.fuga.hoge.fuga.com"のように多くのメアドでは、+の後にaaaのような適当な文字列をいくらでもつけていいことになっています.
emailのフォーマット確認について
右のリンク先ではemailの正規表現を表す表記を紹介している. 以下のようにPythonの場合は記述できる
Python
1
r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
pythonにおけるemailの正規表現. リンク先では他の言語でも大方サポートしている.
この章を学んで新たに学べる
Comments

Reasons
>>隠す