Javascript 電話番号正規表現
Javascriptの電話番号のバリデーションを行っていたのですが、どうも電話番号を『現実的にかつ完璧に』正規表現チェックをするのは難しいらしい。
よく出回っている電話番号のバリデーションチェックだと以下のようなものがあるのですが、下記の場合だと最後のケタ数が4桁で終わらないといけないのでフリーダイヤルの一般的な形『0120-000-000』の対応が出来ない。
/^\d{2,4}-\d{2,4}-\d{4}$/
結論:電話番号正規表現は妥協が必要
下記が私が書いた電話番号の正規表現
/^0\d{1,4}-\d{1,4}-\d{3,4}$/
左のブロックから順に解説すると、
0から始まる2桁以上4桁以下-1桁以上4桁以下-3桁以上4桁以下
この形だと03-1-4678などありえない電話番号でもtureが返ってしまうのですが、そこはケースバイケースで。
おまけ:ハイフンなし
/^\d{7,13}$/