電話番号検証の正規表現を書く
電話番号の形式は国によって大きく異なります。よくある形式に対する実用的なパターンと、電話番号ライブラリの方が良い場合が多い理由を学びましょう。
- 1
電話番号の形式は国によって異なります。US (555-123-4567、(555) 123-4567、+1 555 123 4567)、UK (+44 20 7946 0958)、国際形式 (+CC...) など。実用的な US パターンは ^\+?1?[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ で、一般的な形式を受け付けます。国際対応には libphonenumber のようなライブラリを使ってください。正規表現ですべての国を扱うことはできません。
- 2 正規表現テスター →
電話のパターンをテストします。US の ^\+?1?[-.\s]?\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}$ は 555-123-4567、(555) 123-4567、+1 555 123 4567 にマッチします。国際形式の ^\+\d{1,3}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$ はより寛容です。有効な番号と無効な番号の両方でテストしてください。
- 3 テキスト電話番号抽出 →
テキストから電話番号を抽出します。このツールは電話番号らしいパターンを見つけます。結果を自分の正規表現と比較して、正しさを検証してください。サポートすべき形式の参考にもなります。
よくある質問
- 正規表現と電話ライブラリのどちらを使うべきですか?
- 単一の国なら正規表現で十分です。国際番号には libphonenumber (Google) などを使ってください。国ごとの形式を処理し、市外局番を検証し、番号を正しく整形します。電話番号のルールは、単一の正規表現には複雑すぎます。
- 整形済みと正規化済みのどちらの電話番号を保存すべきですか?
- データベースには正規化済み (E.164 形式:+15551234567) で保存してください。UI には整形済み (+1 555-123-4567) で表示します。正規化はすべての書式を取り除き国コードを付加するため、一貫した比較と発信が可能になります。正規化と整形にはライブラリを使ってください。