2012-03-19 174 views
24

可能重複:
A comprehensive regex for phone number validation
Validate phone number with JavaScript正則表達式來驗證美國電話號碼?

我想寫一個正則表達式來驗證美國格式 (123)123-1234的手機號碼 - 真 123-123-1234 - true

其他所有東西都無效。

我想出了類似

^\(?([0-9]{3}\)?[-]([0-9]{3})[-]([0-9]{4})$ 

但這種驗證, 123)-123-1234 (123-123-1234

這是不正確的。

+9

我覺得這是一個很大友好,讓人們在手機類型以他們想要的方式編號。只需剝離非數字,然後堅持10個數字。 – Pointy 2012-03-19 19:14:22

+0

這可能是重複的,但請在標記帖子之前鏈接到以前的答案。 – mindtonic 2015-03-24 12:23:19

回答

44

最簡單的方法以匹配兩者

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

^[0-9]{3}-[0-9]{3}-[0-9]{4}$ 

是使用交替(...|...)):指定它們作爲兩個主要-不同的選項:

^(\([0-9]{3}\)|[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

順便說一句,當美國人把括號中的區號,我們實際上把那之後的空間;例如,我會寫(123) 123-1234,而不是(123)123-1234。所以,你可能想要寫:

^(\([0-9]{3}\) |[0-9]{3}-)[0-9]{3}-[0-9]{4}$ 

(雖然它可能是最好明確表明你希望的電話號碼是在格式。)

+0

上面的表達式給出了(000)000-0000的成功,我們如何避免這種情況? – HaBo 2013-11-26 21:29:19

+2

@HaBo:我們爲什麼要避免這種情況? – ruakh 2013-11-26 21:33:54

+4

,因爲它不是有效的電話號碼。 – HaBo 2013-11-26 21:37:25

相關問題