2014-01-09 104 views
0

所以我有這樣的正則表達式測試儀:美國/加拿大長途電話號碼的正則表達式測試?

/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value); 

與下列情況下的偉大工程:

123-456-7890 
123 456-7890 
123-456 7890 
(123)-456-7890 
123 456 7890 

但當+1加入爲美國/加拿大境內長途電話的電話號碼完全失敗:

+1 123-456-7890 
1 123-456-7890 
11234567890 
+1 (123)-456-7890 
1 123 456 7890 

如何添加這些情況?

+1

'/ ^(\ +?1?)? \(([0-9] {3})\?)[? - 。 ]([0-9] {3})[? - 。 ]?([0-9] {4})$ /'? – lurker

回答

2

我想這給一個嘗試:

/^(\+?1 ?)?\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/.test(value); 

我前面加上你的正則表達式與(\+?1 ?)?

+0

看起來不錯!謝謝。 – Bill

0

我強烈建議你使用一個庫做這樣testings,最好的我發現迄今谷歌的libphonenumber(提供各種語言,包括JavaScript)。如果使用整個庫不是您的替代選擇,您可以隨時查看源代碼以找到加拿大數字的正確正則表達式(here元數據源)

相關問題