NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
電話番号 Regex Python バリデーター

電話番号 Regex Python バリデーター

電話番号 Regex Python バリデーターを使用して、電話番号を正確に検証できます。ローカル形式や国際パターンのどちらをチェックする場合でも、このツールはPythonアプリケーション向けに調整された正確な検証を提供します。さらに詳しいテストにはPython Regex Testerをご利用いただくか、Python IP Address Regex バリデーターPython Email Regex バリデーターなどのユーティリティを活用してください。

電話番号 Regex Python バリデーター - ドキュメント

PythonにおけるPhone Number Regexとは?

PythonのPhone Number regexを使うと、文字列がローカル、国際、または読みやすいフォーマットなど、期待される電話番号形式にマッチするかどうかを検証できます。

Pythonでは、これは通常、数字、オプションの国番号、区切り文字(-、スペース、()など)、および有効な長さをチェックするregexパターンを持つreモジュールを使用して行われます。reモジュールはPythonの正規表現処理用の組み込みライブラリで、パターンを使ったテキストの検索、マッチング、操作を簡単に行えます。

電話番号全体を先頭から末尾まで確実にマッチさせるために、正規表現にアンカーを含めることができます。例えば、完全な電話番号regexパターンは次のようになります:

^(+\d{1,3})?\s?(?\d{1,4})?[\s.-]?\d{3}[\s.-]?\d{4}$

主な構成要素:

  • 国番号: 通常は+記号で始まり、1桁以上(例:+1、+44、+91)

  • 市外局番: 括弧内の場合あり(例:(800))、桁数は国・地域によって異なる

  • ローカル番号: 主な桁の連続で、読みやすさのためスペース、ダッシュ、またはピリオドで区切られることがある

利用を始めるにはreモジュールをインポートします:python import re

reモジュールの主要な関数:

  • re.search(): 文字列全体をスキャンし、パターンが見つかった場合にマッチオブジェクトを返します。

  • re.match(): 文字列の先頭のみでマッチを確認します。

  • re.findall(): 文字列内のすべての非重複マッチのリストを返します。

  • re.compile(): regexパターンを再利用可能なパターンオブジェクトにコンパイルします。

一般的な電話番号フォーマット

電話番号は国、地域、ユーザーの好みによってさまざまな形式で表示される可能性があります。

  • 国際形式: 国番号(+記号付き)、市外局番、ローカル番号を含みます。

  • ローカル形式: 通常は国番号を省略し、市外局番とローカル番号のみを使用します。

一般的な区切り文字

  • スペース

  • ダッシュ

  • ピリオド

  • 区切り文字なし

  • 市外局番を括弧で囲む

主なPython re関数

  • re.search(): パターンにマッチする最初の場所を文字列全体からスキャンします。

  • re.match(): 文字列の先頭からのみパターンをチェックします。

  • re.findall(): すべての非重複マッチを収集し、リストで返します。

  • re.compile(): regexパターンを準備して再利用できるようにします。

使用するタイミング

  • 電話入力が正しいことを確認するためのユーザーサインアップフォーム

  • 連絡先データを処理するAPI

  • モバイルエントリをクリーニング・検証するCRMシステム

  • 不正なフォーマットによるメッセージ失敗を回避するSMS/通話システム

電話番号の一般的なRegexパターン

  1. 数字のみ(10桁の米国スタイル):

    ^\d{10}$

    マッチ例:9876543210

  2. 国番号付き(例:インドの+91):

    ^\+\d{1,3}\d{7,14}$

    マッチ例:+919876543210

  3. スペースまたはハイフンを含むフォーマット:

    ^\+?\d{1,3}[-\s]?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$

    マッチ例:+1 800-555-1234または(800) 555-1234

PythonでRegexを使って電話番号を検証する方法

import re

def is_valid_phone(phone): # オプションの国番号、スペース、ダッシュ、括弧を許可 pattern = re.compile(r'^+?\d{1,3}?[-\s]?(?\d{2,4})?[-\s]?\d{3,4}[-\s]?\d{4}$') return pattern.match(phone) is not None

テストケース

print(is_valid_phone("+91 98765 43210")) # True print(is_valid_phone("(022) 123-4567")) # True print(is_valid_phone("9876543210")) # True print(is_valid_phone("12345")) # False

名前付きグループで可読性を向上させる

Pythonのregexで名前付きグループを使用すると、各セクションに説明的なラベルを付けることができます。

pattern = re.compile(r'(?P<country_code>+\d{1,3})?\s?(?(?P<area_code>\d{1,4}))?[\s.-]?(?P<local_number>\d{3}[\s.-]?\d{4})')

名前付きグループの利点:

  • 可読性: country_codearea_codelocal_numberなどのラベルにより、各部分が何にマッチするかが一目瞭然です。

  • アクセスのしやすさ: match.group('area_code')で名前でグループのマッチにアクセスできます。

一般的なユーザー入力エラーの処理

ユーザーはさまざまな方法で入力することがあります。regexを適用する前に入力を前処理することで、より堅牢な検証が可能です。

def preprocess_phone_number(phone_number):

余分なスペースを削除

phone_number = " ".join(phone_number.split())

一般的な誤った区切り文字を置換

phone_number = phone_number.replace(",", ".").replace(";", ".") return phone_number

def validate_phone_number(phone_number): phone_number = preprocess_phone_number(phone_number) match = pattern.search(phone_number) return bool(match)

組み合わせをお勧めするツール

プロのヒント

  • 保存のために検証後に常に電話番号を正規化してください(例:ハイフンやスペースを削除)。

  • 国際ユーザーを扱う場合は、オプションの+と可変長をサポートするパターンを優先してください。

  • 固定長を想定しないでください。国によって規格が異なります(英国、インド、米国など)。

  • 文字列全体を厳密にマッチさせたい場合はre.match()の代わりにre.fullmatch()を使用してください。

  • UIでは、精度向上のためにregex検証と国番号のドロップダウンを組み合わせることを検討してください。

ユースケース

  • DjangoまたはFlaskフォームでのユーザー入力の検証

  • ETLパイプラインでの一括連絡先データのフィルタリング

  • SMSアラート送信前の電話番号の確認

  • Pythonベースのデータバリデーターへのregex制約の追加

Frequently Asked Questions

このregexは固定電話フォーマットをサポートしていますか?

特定の国や市外局番の電話番号を検証したい場合は、パターンを簡単に調整できます。例えば、市外局番が特定の範囲のUS番号にマッチさせるには:pattern = re.compile(r"(+1)?\s?(?(2\d{2}[3-9]\d{2}))?[\s.-]?\d{3}[\s.-]?\d{4}")。これにより、携帯・固定電話の両方に柔軟に対応し、オプションの国番号をサポートし、括弧あり・なしの市外局番と区切り文字あり・なしを認識します。

国際形式にこのregexを使用できますか?

はい。+プレフィックスと柔軟な桁数マッチングにより、ほとんどの国際番号に対応できます。

テキストファイルから有効な電話番号のみを抽出するにはどうすればいいですか?

re.findall()にregexパターンを渡して、任意の文字列からすべての有効なマッチを取得してください。

regexは実際の電話番号の検証に十分ですか?

Regexはフォーマットを確認しますが、番号が実在するかどうかはわかりません。リアルタイム検証にはOTPや番号照合APIと組み合わせてください。

フォーマット済みと非フォーマット済みのどちらの番号を保存すべきですか?

正規化された番号(例:数字のみ)を保存し、表示時にランタイムでフォーマットすることをお勧めします。

APIのテストを今すぐ始めましょう!

平易な英語で記述するだけで、Qodexがセキュアですぐに実行できるテストに変換します。