郵便番号・電話番号・住所の正規表現2026年版
公開: 2026-06-16
日本語特有の和書式に対応した正規表現を、現場でそのまま使える形でまとめます。日本郵便・総務省の公式仕様に準拠した上で、レアケース(北海道・IP電話・全角入力)への向き合い方も整理しました。
郵便番号(日本郵便の公式書式)
日本郵便の郵便番号は 3桁 + ハイフン + 4桁 の7桁構成です。表記揺れ(ハイフンなし・全角・〒記号)を吸収するかどうかで正規表現が変わります。
// 厳密:ハイフン入り7桁
/^\d{3}-\d{4}$/
// 緩い:ハイフン省略可
/^\d{3}-?\d{4}$/
// 〒記号付き・前後空白OK
/^\s*〒?\s*\d{3}-?\d{4}\s*$/全角数字(0〜9)で入ってきたら、保存前に半角化することを推奨します。本サイトの 全角半角変換 ツールで挙動を確かめられます。
電話番号(総務省『電気通信番号規則』準拠)
日本の電話番号は、総務省の電気通信番号規則で『市外局番+市内局番+加入者番号』の3区切りに定められています。市外局番は2〜5桁、加入者番号は4桁、合計10桁(携帯は11桁)が基本です。
// 汎用(固定+携帯):0X-XXXX-XXXX
/^0\d{1,4}-\d{1,4}-\d{4}$/
// 携帯番号(070/080/090)
/^0[789]0-\d{4}-\d{4}$/
// IP電話(050)
/^050-\d{4}-\d{4}$/
// フリーダイヤル(0120/0800)
/^(0120|0800)-\d{3}-\d{3}$/
// ハイフンなし許容(11桁)
/^0\d{9,10}$/現実の入力では「03(1234)5678」「03 1234 5678」「+81-3-1234-5678」も来ます。バリデーションは緩く受けて、保存前に正規化(ハイフン区切りの統一)するのが定石です。
市外局番のレアケース
- 2桁市外局番:03(東京)/06(大阪)など。市内局番は4桁。
- 3桁市外局番:011(札幌)/052(名古屋)など。市内局番は3〜4桁。
- 4桁市外局番:0123(千歳)/0428(青梅)など。市内局番は2桁。
- 5桁市外局番:01267(中標津)/09969(小笠原)など。市内局番は1桁。
- 離島の特例:与那国・小笠原などは5桁市外局番。
単純な 0X-XXXX-XXXX パターンは2桁市外局番を前提にしているため、4桁・5桁の地域で弾いてしまうことがあります。ビジネス系のフォームでは 0\d{1,4}-\d{1,4}-\d{4} のように幅を持たせるのが安全です。
住所:都道府県の分割
住所文字列から都道府県を切り出すときの定番です。
// 都道府県+それ以降(市区町村以降) /^(...??[都道府県])(.*)$/ // 例: 「東京都千代田区...」→ $1=東京都, $2=千代田区... // 「北海道札幌市...」 → $1=北海道, $2=札幌市... // 「神奈川県横浜市...」→ $1=神奈川県, $2=横浜市...
...?? は『0〜3文字の非貪欲マッチ』。北海道(3文字)・東京都/京都府/大阪府(3文字)・神奈川県/和歌山県/鹿児島県(4文字)に正しく対応します。.?? 程度では4文字県(鹿児島県など)を取り損ねます。
全角数字・全角ハイフンの吸収
日本のフォームには、IMEから全角数字(0〜9)・全角ハイフン(-、—、ー)が混じることがしばしばあります。正規表現で頑張るより、受信側で先に半角化する方が、その後の処理がずっと楽です。
// 全角→半角の変換 str .replace(/[0-9]/g, c => String.fromCharCode(c.charCodeAt(0) - 0xFEE0)) .replace(/[-—ー‐]/g, '-');
補足
- ・本記事は2026-06-16時点の日本郵便・総務省の公式仕様に基づく一般解説です。市外局番の再編は時々あり、最新情報はTCA(電気通信事業者協会)公開資料をご確認ください。
- ・住所の正規表現は『先頭から都道府県を切り出すのが本当に妥当か』を含めて、業務上の要件(番地・建物名の分割など)に応じて再設計してください。
パターンを試しに動かす
上の正規表現を貼って、手元の住所録・顧客台帳の抜粋でマッチ挙動を確かめられます:正規表現チェッカー