サイトアイコン IT NEWS

【保存版】PHPとJavaScript兼用!エラーチェック用の正規表現一覧

regex

アプリを開発する上で、文字数字妥当性チェックする際に欠かせないのが正規表現
今回はPHPJavaScriptの共通で使える、一般的なエラーチェック用の正規表現をまとめました!

正直、正規表現っていくら説明されても何かの暗号のようでなかなか理解できません。
こうなったら、よく使う正規表現コピペですぐ利用できるようにしておこう!って話ですw

フォームでよく使う正規表現

正規表現でのエラーチェックは、プログラマーにとっていつも悩みの種です。
それは、入力フォームが作りて側の要望によってそれぞれ違うからです。

例えば、あるサイトは全角OKなのに別のサイトはダメとか、電話番号ハイフンの有無とか、郵便番号の入力欄が上3桁下4桁で分かれてたりくっ付いたりなど。

管理者

全世界とは言わないが、せめて日本全国で統一してほしい。

ありがたいことに、そんな痒いところに手を届かせてくれるサイトが複数ありますので、そちらを参考に少しだけ応用をします。

参考サイト

form用正規表現判定/備忘 – Qiita
そのまま使える正規表現集 for regExp (javascript) | 素人ときどき玄人
jQuery-Validation-Engine/jquery.validationEngine-ja.js at master · posabsolute/jQuery-Validation-Engine · GitHub

正規表現の応用編

我が国のエラーチェックで最も厄介なものは、日本語2バイト文字)を扱うこと。
英語圏だと、アルファベット、数字、記号くらいで事足りますが、全角文字で倍になり、ひらがな、カタカナ、漢字がプラスされます。

PHP・JavaScript兼用の正規表現一覧

それでは、今後の作業を少しでも楽にするために、入力フォームのエラーチェックでよく使う正規表現を、PHPJavaScriptの両方でそのままコピペして使えるように一覧でまとめました!

半角英数記号

/^[a-zA-Z0-9!-/:-@¥[-`{-~]+$/

全半角英数字+ひらがな・カタカナ・漢字

/^[a-zA-Za-zA-Z0-90-9ぁ-んァ-ヶ一-龠]+$/u

0から始まる10~11桁でハイフン無しの電話番号

/^0/?([0-9]{9,10})$/

国際電話も含めたハイフンの有無を問わない電話番号

/^([+][0-9]{1,3}[ .-])?([(]{1}[0-9]{2,6}[)])?([0-9 .-/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/

メールアドレスをもっと厳密に

/^((([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+(.([a-z]|d|[!#$%&'*+-/=?^_`{|}~]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])+)*)|((x22)((((x20|x09)*(x0dx0a))?(x20|x09)+)?(([x01-x08x0bx0cx0e-x1fx7f]|x21|[x23-x5b]|[x5d-x7e]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(\([x01-x09x0bx0cx0d-x7f]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))))*(((x20|x09)*(x0dx0a))?(x20|x09)+)?(x22)))@((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).)+(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).?$/i

URLをもっと厳密に

/^(https?|ftp)://(((([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(%[da-f]{2})|[!$&'()*+,;=]|:)*@)?(((d|[1-9]d|1dd|2[0-4]d|25[0-5]).(d|[1-9]d|1dd|2[0-4]d|25[0-5]).(d|[1-9]d|1dd|2[0-4]d|25[0-5]).(d|[1-9]d|1dd|2[0-4]d|25[0-5]))|((([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|d|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).)+(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])*([a-z]|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF]))).?)(:d*)?)(/((([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(%[da-f]{2})|[!$&'()*+,;=]|:|@)+(/(([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(%[da-f]{2})|[!$&'()*+,;=]|:|@)*)*)?)?(?((([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(%[da-f]{2})|[!$&'()*+,;=]|:|@)|[uE000-uF8FF]|/|?)*)?(#((([a-z]|d|-|.|_|~|[u00A0-uD7FFuF900-uFDCFuFDF0-uFFEF])|(%[da-f]{2})|[!$&'()*+,;=]|:|@)|/|?)*)?$/i

区切り文字がスラッシュとハイフン両対応の日付

/^d{4}[/-](0?[1-9]|1[012])[/-](0?[1-9]|[12][0-9]|3[01])$/

IPv4アドレスかどうか

/^((([01]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))[.]){3}(([0-1]?[0-9]{1,2})|(2[0-4][0-9])|(25[0-5]))$/

正規表現まとめ

ここまで紹介し正規表現は、以前紹介したjQuery Validationプラグインカスタムバリデーションを追加する際にも有効です。

正規表現は同じ動きをしても書き方が異なる場合があります。
例えば、w半角英数字(とアンダーバー)を表したり、d半角数字([0-9])を表すメタ文字として定義されています。

管理者

こんな書き方もあるよ!もっとスマートに書けるよ!という意見があればコメントください。

モバイルバージョンを終了