2017-07-16 403 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個空間或數字之間1個破折號
  2. 允許沒有空間或根本沒有破折號(當前場景)
  3. 確保僅存在1 +號使用
  4. 確保號碼長度至少爲10個字符,少於20個字符。

如果1.太複雜了,你能告訴我如何在沒有任何特定規則的情況下允許空格和/或破折號,所以一個數字如:-33-999 999 + 99-99,而完全錯誤仍然有效。

由於

回答

1

^+(\ S)\ d * \ S \ d {3}(\ S | - )?\ d {3}(\ S | - )?\ d * (\ S | - )?\ d * $

以上至REGx

  • \ s的用於檢查任何空白

  • (\ S)?裝置可以有空白或也許不會

  • 用於驗證長度可以取代*含{響開始,響端} 例如{10,20}

  • \ d {3}表示只接受3位在那個地方

  • (\ s | - )?意味着可以有空白或 - 不能同時使用

=================================== =====================================

您可以使用本網站進行測試http://regexr.com/ 請參閱有關更多信息,
Regx Tested

休息是高達你這個形象。一旦你學會了,你可以建立自己所需的regx,你應該在上面提到的網站上檢查正則表達式cheatsheet。它會有很大的幫助。

+0

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

+0

感謝您指點我正確的方向和快速速成課程!我真的需要學習如何一勞永逸地使用RegEx。非常有用,但在同一時間完全痛苦! – Thierry

+0

如果它可以幫助你檢查這個谷歌的公共庫解析,格式和驗證國際電話號碼。 https://github.com/googlei18n/libphonenumber – mlkptl35

0

這是我設法讓我的正則表達式來嘗試出來後工作最接近[此處輸入鏈接的描述] [regexr]由@ mlkptl35

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

建議它將使字符串:

  1. 要麼開始以+或00爲國際部分,後跟最多3位數字

  2. 允許任何數字,空格或 - 此後

通過上述正則表達式,我能夠處理好以下號碼:

+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」專家道歉。

如果我有時間改進它,我會提供更新。