米国の数字のみをサポートしている場合は、数字をフォーマットして、必要な場所に括弧とxを表示できます。
文字列全体を保存したいのですが、正規表現を使用して解析して検証し、正規化された文字列に保存します。
どの国でも受け入れられるようにするには、次のようにします。
IDDコードをすべての電話番号に追加してから、その国のユーザーから非表示にします。
したがって:(123)456-7890 x1234は+1(123)456-7890x1234として保存されます
(perl互換の)正規表現は次のようになります(完全にテストされておらず、機能しません):
(+ \ d +)?\ s +(((\ d {、3}))(?\ s +([-。0-9] {6、})\ s +((x | ext \ w *)\ d { 、4})
- これは、+が前に付いたオプションの桁数です
- 1つ以上のスペースが続きます
- 次に、括弧の間に最大3桁のオプションのグループ
- 次に、1つ以上のスペース
- 次に、6桁以上の数字、ダッシュ、またはドットのグループ
- 次に、1つ以上のスペース
- 次に、オプションのxまたはext(ext、extension ...)で始まる単語と最大4桁のグループ
国と市外局番を含むユーザーのデータベースがあり、それらが欠落している場合に備えて自動的に入力します。国には、電話番号のデフォルトの数字グループ化規則があります(私たちの場合は3,4)。
- したがって、米国のエリア123にいて、456.7890と入力すると、+1(123)4567890として解析され、456-7890としてのみ表示されます。
- カタールにいて、番号4444555 extenshn 33を入力すると、+ 974 4444555 x33として保存され、4444555x33と表示されます。
同じ国のユーザーには国際コードは表示されず、同じ国のユーザーと市外局番には市外局番は表示されません。完全な番号はマウスオーバー(HTMLラベル?)に表示されます