7

北米の電話番号の場合、(999)999-9999は入力マスクに非常に適しています。

ただし、北アメリカ以外の番号を処理する良い例は見つかりません。桁数は変動する可能性があることを知っているので、桁のみに制限する以外に、どこかに良い例がありますか?

4

6 に答える 6

4

実際、一般的なマスクはありません。組み合わせが多すぎます。

固定されているのは国際国コードのみで、通常は接頭辞が+.

電話番号計画に関するウィキペディアの記事によると、ほとんどの国はE.164番号計画に準拠しています。

私が E.164 を正しく読めば、次の仮定を安全に行うことができます。

  • 国コード: 1 ~ 3 桁

  • ネットワーク / 市外局番と番号: 19 桁まで

国番号を尋ね、「市外局番 + 番号」フィールドに 19 桁の入力を求めます。

于 2010-10-18T18:55:16.443 に答える
2

次のような単純な RegEx を使用して国コードを推測できます。

^(?:(?:0(?:0|11)\s?)|+)([17]|2([07]|[1-689]\d)|3([0-469]|[578]\d)|4([013-9]|2\d)|5([1-8]|[09]\d)|6([0-6]|[789]\d)|8([12469]|[03578]\d)|9([0-58]|[679]\d))

に続く

(([\s\(\).-]{0,2}\d){4,13})$

国番号を抽出します。

国内番号の長さと有効性を検証するには、libphonenumber などが必要です。

上記の長い RegEx では、国コードの前に +、00、または 011 を使用でき、番号の句読点を選択することもできますが、これも削除する必要があります。

于 2012-09-12T00:28:47.340 に答える
0

スペース、ダッシュ、スラッシュなどすべてを許可しますが、実際には数字とオプションの先頭の + 記号のみを考慮します。特定の長さの特定のブロックを想定するなど、他のすべては単にトラブルを求めているだけです。

于 2010-10-18T19:21:16.817 に答える
0

アプリケーションについては言及していませんが、これは正規表現を使用して確かに可能です。こちらをご覧ください

于 2010-10-18T18:53:48.993 に答える
0

簡単ではありません。理由の例については、このページをご覧ください。ドイツの電話番号だけを見ると、どこから電話をかけているかによって異なる形式があることに気付くでしょう。あなたはどちらを選びますか?これはドイツの電話番号のみです。それらは大陸ごと、国ごとに異なります。

「数値のみ」を使用するのがおそらく最も安全な方法です。

于 2010-10-18T18:57:16.707 に答える