2017-07-16 19 views
1

国際電話番号を扱う必要がありますが、電話機を特定の形式にする必要はありません。私はそれを米国、スペインなどに適用する方法について数多くの例を見つけましたが、00または+で数字を入力することはできませんが、空白やダッシュや空白やダッシュは使用できません。国際電話番号の有効性確認RegEx

私はasp.net MVC 5アプリケーションで電話番号フィールドに適用され、次の式持って

:それで

[RegularExpression(@"^\+?\d*$", ErrorMessage = "Not a valid Telephone number.")] 

が立って、それが次のシナリオを処理します。

+19999999999 
0019999999999 

これは問題ありませんが、スペースやダッシュは許可されていませんので、このような番号は

+ 1 999 999 99 99 
+32 999-999-99-99 
+7 999 999-99-99 

有効とはみなされません。

どのようにスペースやダッシュを含めることができますか。具体的には、それを確保することができる:

  1. のみ1スペースまたは数字
  2. 間の1つのダッシュにスペース又は全くダッシュ(現在のシナリオ)
  3. のみ1 +用いる符号があることを確認しないが許可されています
  4. 数字が10文字以上20文字未満であることを確認してください。

1.は、あまりにも複雑であるあなただけの任意の特定のルールなしにスペースおよび/またはダッシュを許可する方法を教えてくださいすることができますので、このような多数の場合:-33-999 999 + 99から99、ながら完全に間違っていても有効です。

おかげ

答えて

1

^+(\ S)\ D * \ S \ D {3}(\ sは| - )???\ dの{3}(\ sは| - )?\ D * (\ sは| - )?\上記REGXでD * $

  • \ sが(\ S)空白

  • をチェックするために使用されていますか?長さを検証するため

  • 空白またはそうでないかもしれないがあることを意味しますがD \ {鳴っ開始、鳴っ終了} 例{10,20}

  • で*置き換えることができます{3}の手段だけで3桁​​を受け入れますその場所に

  • (\ s | - )?===================================両方ではない

- が空白であるか、またはできることを意味します===================

このウェブサイトをテスト用に使用することができますhttp://regexr.com/
Regx Tested

残りはあなた件までです詳細については、この画像を参照してください。上記のウェブサイトで正規表現のチートシートをチェックする必要がある場合は、あなた自身の必要なregxを構築することができます。それは多くの助けになります。

+0

^- \ d * - \ d * \ s \ d * \ + \ d * - \ d * $ regxは-33-999の999 + 99-99 – mlkptl35

+0

正しい方向と速い短期集中コース!私は本当にRegExを一回使用する方法を学ぶ必要があります。非常に便利ですが、同時に完全な痛みです! – Thierry

+0

があれば、国際電話番号の解析、書式設定、検証のためにこのGoogleの共通ライブラリをチェックアウトしてください。 https://github.com/googlei18n/libphonenumber – mlkptl35

0

これは私が私の正規表現の上でそれを試した後、仕事を得ることができた最も近い[ここにリンクの説明を入力します] [regexr]それはに文字列を許可します@ mlkptl35

^([+]|[00]{2})([0-9]|[ -])* 

をにより示唆されるように:

  1. どちらか任意の数字、スペースや許可までの3桁

  2. 続く、国際部分は+または00で始まる - をその後上記の正規表現で

は、私は次の番号を処理することができました:

+32999999 
+1-99-999-99-99 
+33 99-999-99-99 
+7 999999999 
+44 999999999 
+353 99-9999999 
+1 99-999-9999 
0044999999999 
00353 99-999 9999 

のように。

私はそれが完全ではないと確信していますが、私はちょうど学んでいるので、そこにいるすべての "RegEx"エキスパートに事前にお詫び申し上げます。

私はそれを改善する時間があれば、私は更新を提供します。

関連する問題