30

私は Clickatell を使ってクライアントの携帯電話に SMS を送信しています。

+27 123 4567 など、すべての有効な携帯電話番号の標準化された正規表現はありますか? 私は自分で作成したいと思いますが、あいまいで有効な電話番号の形式がないことを心配しています。

4

6 に答える 6

41

入力から「+」と数字を除くすべての文字を削除した後、次のようにします。

^\+[1-9]{1}[0-9]{3,14}$

国コードをより正確に知りたい場合は、電話番号の国コードのリストに関するこの質問を参照してください

ただし、私は自分の検証を厳密にしすぎないようにしています。有効な番号が受け入れられないと言われると、ユーザーは非常にイライラします。

于 2011-05-09T07:38:30.543 に答える
6

文字列からサブセット「有効な電話番号」に完全に一致する正規表現を記述したとしても、それらが有効な携帯電話番号であることを(正規表現によって)保証する方法はありません。いくつかの国では、携帯電話番号は、少なくとも番号プランの検索なしでは固定電話番号と区別がつかず、場合によっては、それでも役に立たないことがあります。たとえば、スウェーデンでは、多くの人が通常の固定電話のような電話番号を携帯電話に「移植」しています。以前と同じ番号ですが、今では固定電話ではなく携帯電話にかけられています。

有効な電話番号は数字だけで構成されているので、自分で電話をかけると、少なくとも電話番号のあいまいなケースを見落とすリスクがあるとは思えません。確実性を高めたい場合は、すべての有効な国コードのリストを取得し、電話番号の先頭にある国コードの1つが生成された正規表現と一致する必要があるジェネレーターを作成します。

于 2011-02-21T13:22:33.483 に答える
2
^\+[1-9]{1}[0-9]{7,11}$ 

正規表現 ^\+[1-9]{1}[0-9]{7,11}$ は、「+290 8000」および 8 桁未満の同様の有効な数値では失敗します。

最長の番号は、3 桁の国番号、3 桁の市外局番、8 桁の加入者番号のようなもので、14 桁になります。

于 2011-09-29T07:12:27.997 に答える