[PHP]郵便番号を正規表現でチェックする
今回は下記のコードを使って見ていきます。
$zip = '123−4567'; //←全角
$zip = mb_convert_kana($zip, 'a', 'UTF-8');
if (preg_match("/\A\d{3}[-]\d{4}\z/", $zip)) {
print('郵便番号:〒' . $zip);
} else {
print('※郵便番号を 123-4567の形式でご記入ください');
}
↓のように表示されます。
郵便番号:〒123-4567 //←半角になっている
※mb_convert_kanaについては → こちら
パラメーターで「'a'」を指定する理由
郵便番号は数字なので「'n'」では?と思うかもしれませんが、
-(ハイフン)が含まれているので英数字扱いとなります。
「'a'」と指定することで、英数字を半角に直すことができます。
本題の正規表現ですが、まずpreg_match
というファンクションを使います。
続く/\A\d{3}[-]\d{4}\z/
について見ていきます。
\d{3}
dというのは数字「DECIMAL(デシマル)」のこと
{3}は3つ
つまり、「数字を3つ並べること」という指定
[-]
前後を-(ハイフン)で結んでくださいという指定
\d{4}
「数字を4つ並べること」
ここまでで、\d{3}[-]\d{4}
で郵便番号の書式をチェックしています。
それでは、前後の「\A」「\z」は何か?
\A
「文章の先頭であること」を指定
\z
「文章の最後であること」を指定
まとめると、/\A\d{3}[-]\d{4}\z/
というのは
「数字3つ並んでいるのが先頭で、間に-(ハイフン)を挟んで、終わりは数字4つ並んでいます」
というルールの記述になります。
-(ハイフン)有無のチェックもされているので、
$zip = '1234567';
だと
※郵便番号を 123-4567の形式でご記入ください
と返されます。
以上です。お疲れ様でした。
Author And Source
この問題について([PHP]郵便番号を正規表現でチェックする), 我々は、より多くの情報をここで見つけました https://qiita.com/maca12vel/items/5c37250bbc7f80bdd9b3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .