そのため、カナダ、米国、インド、英国などのユーザーを含むグローバルユーザーに使用されるWebページを設計しています。この電話番号フィールドに検証を適用する必要がありますが、これを実行する最善の方法はわかりません。
私が考えることができるいくつかの有効な形式は次のとおりです。
- 1800123456(インド)
- 米国の電話番号での「-」の使用
ユーザーに入力を許可する必要がある特殊文字(たとえば、- / ()
)について少し混乱しています。過去に他の人はこれをどのように解決しましたか?
そのため、カナダ、米国、インド、英国などのユーザーを含むグローバルユーザーに使用されるWebページを設計しています。この電話番号フィールドに検証を適用する必要がありますが、これを実行する最善の方法はわかりません。
私が考えることができるいくつかの有効な形式は次のとおりです。
ユーザーに入力を許可する必要がある特殊文字(たとえば、- / ()
)について少し混乱しています。過去に他の人はこれをどのように解決しましたか?
回答:
何かを制約できるからといって(プログラマーとしてコードを書くために支払われるものです)、実際にこれを行う必要があるわけではありません。
数値を検証する意味は何ですか?なぜ便利なのですか?ユーザーが「0800DIALTHIS」、「私は電話番号を持っていない」、または「(499)123-45-67добавочный4425」と入力すると失敗しますか?確かに(「グローバル」と言います。そうではありませんか?)、ユーザーは電話での連絡方法に関する重要な情報を伝えたいだけです。
また、データの保存方法は、使用方法によって管理する必要があります。数字はどのように使用しますか?SMSスパムの自動送信に使用されますか、それともマネージャーによって手動でダイヤルされますか?後者の場合、人間の脳は最も適切と思われる方法でそれらを解析できるため、追加の文字を許可しても大丈夫です。この場合、検証は実際に必要ありません。これは人間のユーザーを悩ますだけです。
国によってフォーマットが異なるため、数値が有効かどうかを知ることは非常に困難です。たとえば、フランスでは、06 12 34 56 78は有効な電話番号ですが、00 12 34 56 78は有効ではありません。番号は01〜09、06、07が携帯電話でしか開始できないためです。
また、電話番号は同じ国でもいくつかの形式で書くことができます。私は見た:
最後の2つは国際的な形式です。
一般に:
+
先頭文字としての記号、ダッシュ、ドット、コンマ、およびスペースのみを許可します。国ごとの検証に深く入り込むことは推奨されません。大量のルールがあるだけでなく、ルールも変更されます。たとえば、数年前のフランスでは、07または09から始まる電話番号はありませんでした。携帯電話の増加に伴い、07が登場しました。VoIPサービスでは09が登場しました。
特別な番号を考慮することもできます。たとえば、3635は、4桁しか含まれておらず、ゼロ以外で始まる場合でも、フランスでは有効な数字です。
+31 (0)30 1234567
、31はオランダ、030は市外局番、1234567は加入者です。
文字を制限しないでください。彼があなたに与えたものすべてを取りなさい。ただし、ダイヤルするときは、数字のみを使用してください。それでもそれが間違って動作する可能性があります。123-4567-9は内線番号ではなく、1234567から1234569までの数字の範囲を意味することを知る1年前にタイにいました。数字だけをダイヤルしてください。
私の新しい電話では、電話番号にスペースを使用できることが気に入っています。「123 456 7890」と同じように入力できますが、すべて一緒にマッシュされたわけではありません。
ブラケット、ダッシュ、およびスペース。
ユーザーがこれらの記号を含む電話番号を入力したら、国固有の規則(各国ごとにこれらの規則を収集する必要があります)に従ってそれらを検証できます。ソフトウェアの内部で処理されます。
これは、IDD(国際直接ダイヤル)により、数字のパンチでの一時停止を除き、数字のダイヤルで実際に使用される「特殊文字」を要求することが不可能になるためです。
(私はこれについてまったく知識がありません。間違っている場合は修正してください。)
検証する必要があるのは、桁数だけです-呼び出す必要があるものと一致しますか?
ユーザーがアクセスコードを入力することを許可または禁止する必要があります(米国の場合は+1)。理由をお話しします-もしそれがアメリカ人であり、それらがそれほど精通していないなら、彼らはおそらく1の代わりに001を入力したいと思うでしょう。彼らはそれと+1の違いを知りません。市外局番間(および場合によっては同じ市外局番)で固定電話を呼び出す場合は、その番号の前に1も入力します。日本のように。
日本を取る。州の陸線には、その前に0を付けてアクセスします。ただし、日本国外からダイヤルする場合は、その0は必要ありません。
中国の携帯電話番号は10桁で、香港では8です。フォームが国をキャプチャしている場合、番号の先頭に国コードを入力する必要はありません。入力する必要がある番号。
リストは続きます。
桁数を検証し(文字が受け入れられないことを確認してください)、エンドユーザーが正しい桁数を簡単に入力できるようにします。つまり、国コードを入力する必要はありません。フォームが非常にスマートであれば、固定電話番号であれば市外局番を入力する必要さえありません。または、日本の番号の前に0などのアクセスコードなどを入力し始めた場合は、必要がないことを伝えてください。
その場合、数字以外のすべての文字が重要なポイントになるはずです-彼らはそれらを入力する機会がありません。
Googleにはこのためのライブラリがあります。
国際電話番号の解析、書式設定、検証のためのGoogleの一般的なJava、C ++、およびJavaScriptライブラリ。
https://github.com/googlei18n/libphonenumber
これは最善の努力を尽くします。これは決して簡単な作業ではないため、処理されないケースがあるに違いないと思います。ユーザーが数字と文字を入力できるようにし、後でコードを使用して文字を削除します。