電話番号に使用できる特殊文字は何ですか?


20

そのため、カナダ、米国、インド、英国などのユーザーを含むグローバルユーザーに使用されるWebページを設計しています。この電話番号フィールドに検証を適用する必要がありますが、これを実行する最善の方法はわかりません。

私が考えることができるいくつかの有効な形式は次のとおりです。

  1. 1800123456(インド)
  2. 米国の電話番号での「-」の使用

ユーザーに入力を許可する必要がある特殊文字(たとえば、- / ())について少し混乱しています。過去に他の人はこれをどのように解決しましたか?


1
0800DIALTHISなどの文字で表される電話番号はどうですか?
-mouviciel

3
何を防ごうとしていますか?ユーザーは嘘をついていますか?ユーザーはあなたに番号を知らせて欲しくないのですか?ユーザーが入力するのが面倒です?ユーザーはタイプミスをしていますか?
ベンジョー

@ mouviviel:はい、それは私が一度に1つの検証シナリオを取っていることを考える必要があるので、それについて考えます。
レンジャー

@Benjol:このアプリケーションは商用のものですので、ユーザーが正しい番号を入力することは知っていますが、そうでない場合はどうすればよいかをリスクにさらすことはできません。入力ミスだけでなくアプリケーションを保存するため、検証は非常に重要です。DBに無駄なジャンクを入れたくありません。
レンジャー

5
さて、あなたは彼らのメールアドレスを検証するために何をしていますか?ほぼすべてのWebサイトが「実際の」検証(つまり、メールの送信)を行うことがわかります。私は電話番号があればと思うことが重要、あなたが同等の何かをする必要があると思います。
ベンジョー

回答:


21

何か制約できるからといって(プログラマーとしてコードを書くために支払われるものです)、実際にこれを行う必要があるわけではありません。

数値を検証する意味は何ですか?なぜ便利なのですか?ユーザーが「0800DIALTHIS」、「私は電話番号を持っていない」、または「(499)123-45-67добавочный4425」と入力すると失敗しますか?確かに(「グローバル」と言います。そうではありませんか?)、ユーザーは電話での連絡方法に関する重要な情報を伝えたいだけです。

また、データの保存方法は、使用方法によって管理する必要があります。数字はどのように使用しますか?SMSスパムの自動送信に使用されますか、それともマネージャーによって手動でダイヤルされますか?後者の場合、人間の脳は最も適切と思われる方法でそれらを解析できるため、追加の文字を許可しても大丈夫です。この場合、検証は実際に必要ありません。これは人間のユーザーを悩ますだけです。


7
「ユーザーが重要な情報を伝えたかった」ための+1。実際に技術的な(または組織的な)要件なしにユーザーを単に悩ませる不必要な検証を見たことがあります。
ペルディアン

6
+1-電話番号の検証(特にこれは広く定義されている)は多くの場合、無意味であり、将来にわたって保証されません(たとえば、KL5-6743は以前は有効な電話番号でした)。電話番号を大きなテキストフィールドにして、自動ダイヤラー(このシナリオに存在する場合)ができることを解析できるようにします。例外は、状況を適切に処理できる人間に発生する可能性があります。
EZハート

8
+1、そして最も重要なのは、電話番号が有効であるからといって、それが存在することを意味するものではなく、たとえ存在するとしても、それが問題の人のものであることを意味するわけではありません
...-Benjol

そうそう、私たちの主要なユーザーが住んでいる国を把握し、検証コードを書きます。すべてのおかげで、私はあなたの努力を感謝します。
レンジャー

4
@Rangerそれは答えが得ていたものの正反対です。
セバスチャンレッド

7

国によってフォーマットが異なるため、数値が有効かどうかを知ることは非常に困難です。たとえば、フランスでは、06 12 34 56 78は有効な電話番号ですが、00 12 34 56 78は有効ではありません。番号は01〜09、06、07が携帯電話でしか開始できないためです。

また、電話番号は同じ国でもいくつかの形式で書くことができます。私は見た:

  • 06 12 34 56 78
  • 0612345678
  • 06.12.34.56.78
  • 06-12-34-56-78
  • +33612345678
  • +33(0)6 12 34 56 78

最後の2つは国際的な形式です。

一般に:

  1. 角かっこ、+先頭文字としての記号、ダッシュ、ドット、コンマ、およびスペースのみを許可します。
  2. 可能であれば、正規化された形式(+33(0)612345678)のみを覚えてください。
  3. これが不可能な場合は、少なくとも区切り文字(スペースなど)を削除してください。

国ごとの検証に深く入り込むことは推奨されません。大量のルールがあるだけでなく、ルールも変更されます。たとえば、数年前のフランスでは、07または09から始まる電話番号はありませんでした。携帯電話の増加に伴い、07が登場しました。VoIPサービスでは09が登場しました。

特別な番号を考慮することもできます。たとえば、3635は、4桁しか含まれておらず、ゼロ以外で始まる場合でも、フランスでは有効な数字です。


1
あなたの例で括弧の使用を示すのに役立ちます。国際電話番号は、多くの場合、これらを使用して市外局番の先頭のゼロを囲み、海外から電話をかけるときにダイヤルしないことを示します。たとえば+31 (0)30 1234567、31はオランダ、030は市外局番、1234567は加入者です。
マージャンヴェネマ

2
拡張コードのオプションフィールドを忘れないでください(ポンドまたはアスタリスクキーを許可する必要がある場合があります)。
rwong

@MarjanVenema、私はあまり国際電話をかけませんが、ゼロを追加し、それをダイヤルしないように指示する括弧(0)を追加するのが標準ですか?0を完全に省く方が簡単ではないでしょうか?
CaffGeek

@チャド:いいえ。それは、国際ユーザーにそれを省く必要があることを告げ、国内ユーザーにそれを使う必要があることを告げます。すべての国にゼロで始まる市外局番があるわけではありません。このようにすることで、誰かが番号を見たときに、出入国時と出国時に何をすべきかを知ることができます。...すべての後に常駐する必要があります全国的に呼び出していないすべての人
マージャンVenema氏

@MarjanVenema、ああ、そうですね、国民のユーザーがそれを必要としていることに気づかず、今日新しいことを学びました。
CaffGeek

3

文字を制限しないでください。彼があなたに与えたものすべてを取りなさい。ただし、ダイヤルするときは、数字のみを使用してください。それでもそれが間違って動作する可能性があります。123-4567-9は内線番号ではなく、1234567から1234569までの数字の範囲を意味することを知る1年前にタイにいました。数字だけをダイヤルしてください。

私の新しい電話では、電話番号にスペースを使用できることが気に入っています。「123 456 7890」と同じように入力できますが、すべて一緒にマッシュされたわけではありません。


2
+100。コンピュータがそれを行う方法の手がかりを持っていないかのように、「数字から-を削除してください」と言っているコンピュータほど悪いものはありません。クレジットカード番号についても同じです、FWIW。
ブライアンオークリー

0

ブラケット、ダッシュ、およびスペース。

ユーザーがこれらの記号を含む電話番号を入力したら、国固有の規則(各国ごとにこれらの規則を収集する必要があります)に従ってそれらを検証できます。ソフトウェアの内部で処理されます。

これは、IDD(国際直接ダイヤル)により、数字のパンチでの一時停止を除き、数字のダイヤルで実際に使用される「特殊文字」を要求することが不可能になるためです。

(私はこれについてまったく知識がありません。間違っている場合は修正してください。)


3
あなたは、国際的なアクセスのために\ +記号を忘れている
マージャンVenema氏

2
文字xも許可します-少なくとも米国では、拡張子の前にxを付けるのが一般的です(例:555-1212 x123)。
ブライアンオークリー

0

検証する必要があるのは、桁数だけです-呼び出す必要があるものと一致しますか?

ユーザーがアクセスコードを入力することを許可または禁止する必要があります(米国の場合は+1)。理由をお話しします-もしそれがアメリカ人であり、それらがそれほど精通していないなら、彼らはおそらく1の代わりに001を入力したいと思うでしょう。彼らはそれと+1の違いを知りません。市外局番間(および場合によっては同じ市外局番)で固定電話を呼び出す場合は、その番号の前に1も入力します。日本のように。

日本を取る。州の陸線には、その前に0を付けてアクセスします。ただし、日本国外からダイヤルする場合は、その0は必要ありません。

中国の携帯電話番号は10桁で、香港では8です。フォームが国をキャプチャしている場合、番号の先頭に国コードを入力する必要はありません。入力する必要がある番号。

リストは続きます。

桁数を検証し(文字が受け入れられないことを確認してください)、エンドユーザーが正しい桁数を簡単に入力できるようにします。つまり、国コードを入力する必要はありません。フォームが非常にスマートであれば、固定電話番号であれば市外局番を入力する必要さえありません。または、日本の番号の前に0などのアクセスコードなどを入力し始めた場合は、必要がないことを伝えてください。

その場合、数字以外のすべての文字が重要なポイントになるはずです-彼らはそれらを入力する機会がありません。


1
私は手紙が受け入れられないことを確認することに同意しません-先に進んで受け入れ、それからそれらを無視してください。人々は当然、先頭に「x」を付けて拡張子を記述します(例:555-1212 x123)。なぜそれを許可しないのですか?人間はそれをうまく解析することができ、コンピュータがそれを使用する必要がある場合、非数字を簡単に取り除くことができます。
ブライアンオークリー

0

Googleにはこのためのライブラリがあります。

国際電話番号の解析、書式設定、検証のためのGoogleの一般的なJava、C ++、およびJavaScriptライブラリ。

https://github.com/googlei18n/libphonenumber

これは最善の努力を尽くします。これは決して簡単な作業ではないため、処理されないケースがあるに違いないと思います。ユーザーが数字と文字を入力できるようにし、後でコードを使用して文字を削除します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.