2014-01-18 205 views
0

在我的android項目中,我需要驗證用戶輸入的手機號碼。手機號碼可以格式化爲(456)123-1234.移動號碼的第一個字符必須是4或5或6.我試過這個正則表達式,但它失敗了。這是我嘗試的正則表達式。使用正則表達式驗證美國電話號碼

"\\([4-6]{1}[0-9]{2}\\)[0-9]{3}\\-[0-9]{4}$"; 

任何人都可以幫助我!提前致謝!

PHONE_REGEX ="\\([4-6]{1}[0-9]{2}\\) [0-9]{3}\\-[0-9]{4}$"; 
+0

你會得到你的答案 –

回答

-1
String sPhoneNumber = "456-8889999"; 


    Pattern pattern = Pattern.compile("\\([4-6]{1}[0-9]{2}\\) [0-9]{3}\\-[0-9]{4}$"); 
    Matcher matcher = pattern.matcher(sPhoneNumber); 

    if (matcher.matches()) { 
     System.out.println("Phone Number Valid"); 
    } 
    else 
    { 
     System.out.println("Phone Number must be in the form XXX-XXXXXXX"); 
    } 
+0

是@ Digvesh Patel ..現在你能告訴我如何只能從字符串中獲得數字字符 – Barbie

+0

str = str.replaceAll(「\\ D +」,「」); –

+0

我可以知道D是什麼意思 – Barbie

1

一個正則表達式匹配您的格式:

我用正則表達式解決了這個問題

(456)123-1234 (starting with only 4,5 or 6) 

是:

^\([4-6]{1}[0-9]{2}\)[0-9]{3}-[0-9]{4}$ 

例子:

http://regex101.com/r/pZ7aL4

如果你想允許右括號後的可選空間,即:

(456)123-1234

您將修改正則表達式稍微像這樣:

^\([4-6]{1}[0-9]{2}\)\s?[0-9]{3}-[0-9]{4}$ 
+0

謝謝你的興趣。我解決了它 – Barbie

+0

不客氣。祝你好運! :) – MElliott

0

您應該知道北美地區的地區代碼與北美編號計劃的一部分共享美國格式,但不共享費率結構h美國電話運營商。示例包括波多黎各,多米尼加共和國,加拿大等。

如果您使用此正則表達式阻止往返長途電話號碼的出站呼叫,則需要特定的白名單或黑名單 - 如果您依賴於正則表達式,你可能會有一些昂貴的驚喜。

相關問題