
電話番号 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パターン
数字のみ(10桁の米国スタイル):
^\d{10}$マッチ例:9876543210
国番号付き(例:インドの+91):
^\+\d{1,3}\d{7,14}$マッチ例:+919876543210
スペースまたはハイフンを含むフォーマット:
^\+?\d{1,3}[-\s]?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$マッチ例:+1 800-555-1234または(800) 555-1234
PythonでRegexを使って電話番号を検証する方法
import redef 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_code、area_code、local_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)
組み合わせをお勧めするツール
Email Regex Python バリデーター: 電話データと並行してメール入力を検証
IP Address Regex Python バリデーター: サインアップ時のIPフィールドを確認
Password Regex Python バリデーター: アカウントセキュリティのための強力なパスワードルールを適用
UUID Regex Python バリデーター: 電話番号と一緒に一意のユーザー/セッションIDを検証
プロのヒント
保存のために検証後に常に電話番号を正規化してください(例:ハイフンやスペースを削除)。
国際ユーザーを扱う場合は、オプションの+と可変長をサポートするパターンを優先してください。
固定長を想定しないでください。国によって規格が異なります(英国、インド、米国など)。
文字列全体を厳密にマッチさせたい場合は
re.match()の代わりにre.fullmatch()を使用してください。UIでは、精度向上のためにregex検証と国番号のドロップダウンを組み合わせることを検討してください。
ユースケース
DjangoまたはFlaskフォームでのユーザー入力の検証
ETLパイプラインでの一括連絡先データのフィルタリング
SMSアラート送信前の電話番号の確認
Pythonベースのデータバリデーターへのregex制約の追加
Frequently Asked Questions
このregexは固定電話フォーマットをサポートしていますか?
pattern = re.compile(r"(+1)?\s?(?(2\d{2}[3-9]\d{2}))?[\s.-]?\d{3}[\s.-]?\d{4}")。これにより、携帯・固定電話の両方に柔軟に対応し、オプションの国番号をサポートし、括弧あり・なしの市外局番と区切り文字あり・なしを認識します。国際形式にこのregexを使用できますか?
テキストファイルから有効な電話番号のみを抽出するにはどうすればいいですか?
re.findall()にregexパターンを渡して、任意の文字列からすべての有効なマッチを取得してください。regexは実際の電話番号の検証に十分ですか?
フォーマット済みと非フォーマット済みのどちらの番号を保存すべきですか?
Related Articles






