2013-03-07 42 views
2

我寫這個正則表達式來美國類型的電話號碼:如何改進這個正則表達式?

\(?\d{3}\)?(-|\s)\d{3}-\d{4} 

這適用於電話號碼,如:

217-244-2424和 (217)244-2424。

但是它也適用於不平衡括號狀(217-244-2424

怎麼能正則表達式加以改進,以確保括號是平衡? (我知道的問上正則表達式的電話號碼的問題before,但我無法找到我是從那裏尋找)

+2

爲什麼你不去掉非數字? – Blender 2013-03-07 07:33:42

+0

可能重複的[電話號碼驗證綜合正則表達式](http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation) – Johnsyweb 2013-03-07 07:33:45

+0

@Blender:是! http://stackoverflow.com/a/123681/78845 – Johnsyweb 2013-03-07 07:34:19

回答

0

我沒有測試過,但爲什麼不使用交替操作符(「|」)?你可以選擇有兩個括號,或者都不是:

(\(\d{3}\)|\d{3})(-|\s)\d{3}-\d{4} 
+0

manojlds已經比我快... – JonesV 2013-03-07 07:42:11

+0

謝謝你。這比我想象的更簡單。 – user2063763 2013-03-07 07:49:30

2

我會回答你的正則表達式的具體問題,你可以嘗試這樣的東西來處理paranthesis:。

^(\(\d{3}\)|\d{3})-(\d{3})-(\d{4})$ 
+0

明白了,謝謝! – user2063763 2013-03-07 07:52:59