■プログラミング学習
◎正規表現のWebアプリケーションの利用
Webアプリケーションのバリデーションにおういて、正規表現は非常に有用なものです。
正規表現を用いることで、より細かいバリデーションの設定ができるからです。
よく利用するものとしては、以下の3つがよく使用されます。
郵便番号
全角かな/カナ漢字の区別
passwordの英数混合の判断※例2に
◎郵便番号
郵便番号は、「3桁の数字」と「ハイフン」と「4桁の数字」で構成されています。
きちんとハイフンが記入された正しい形式で郵便番号を入力しているか判別する方法を学びます。
[10] pry(main)> postal_code = "100-0000" => "100-0000" [12] pry(main)> postal_code.match(/\A\d{3}[-]\d{4}\z/) => #<MatchData "100-0000">
「\A」は、直後においた文字を、文字列の先頭に持つ場合にマッチします。
今回jは、\A\d{3}としているため文字列の先頭に少なくとも3回数字があるとマッチになります。
「\z」は、直後に置いた文字を、文字列の末尾に持つ場合にマッチします。
今回は、\d{4}\zとしているため、文字列の末尾に少なくとも4回数字があるとマッチします。
◎全角かな/カナ漢字の区別
全角かな/カナ、もしくは漢字を区別するためには、アルファベットをチェックするときに使う[a-z]のように表現します。
[ぁ-んァ-ヶ一-龥々ー]と表現することで、「ぁ」から「ん」まで、
「ァ」から「ン」まで、「一」-「龥」までの文字をチェックしています。
これらの文字の範囲は、Unicodeにおける範囲のため、上記範囲で一般的に指定されます。
ただし、「ヴ、ヵ、ヶ、々」という文字が、弾かれてしまいます。
utf-8文字コード上では「ヴ」「ヵ」「ヶ」は
カタカナの「ン」以降に配列されているため、
「ァ-ヶ」と記載し、また「々」はutf-8文字コード上で記号と認識されているため
別途、「々」で指定を追加しています。
これであらゆる日本語に対応する言葉ができています。
さいごに、長音記号が含まれた文字列「ビーバー」や「ポール」のような場合、
末尾に「ー」を追加して、
[ぁ-んァ-ヶ一-龥々ー]と記載しています。
[1] pry(main)> full_name = "山田いち郎" => "山田いち郎" [2] pry(main)> full_name.match(/\A[ぁ-んァ-ヶ一-龥々ー]+\z/) => #<MatchData "山田いち郎"> [3] pry(main)> name = "田中ヨハンソン" => "田中ヨハンソン" [4] pry(main)> name.match(/\A[ぁ-んァ-ヶ一-龥々ー]+\z/) => #<MatchData "田中ヨハンソン"> [5] pry(main)> name = "tanakaヨハンソン" => "tanakaヨハンソン" [6] pry(main)> name.match(/\A[ぁ-んァ-ヶ一-龥々ー]+\z/) => nil
[5]がnilで返ってきている理由としては、アルファベットを使用しているため
マッチしていないからになります。
Part 2に続く
最近読み始めた本です↓