2013-05-29 63 views
0

我有遵循這種模式的輸入形式:電話號碼的正則表達式不工作

pattern='(\+|00)\d{2,3}[-]\d{8,10}' 

一個例子是+999-123456789

我必須成立使用JavaScript再次進行驗證,並嘗試轉換該模式轉換爲正則表達式,該示例傳遞模式但未能通過正則表達式。任何想法爲什麼?

var check = /^([00|+])([0-9]{2,3})[-]?([0-9]{8,10})$/; 
+2

你爲什麼不這樣做檢查? '/^(\+|00)\d{2,3}-\d{8,10}$/.test('+999-123456789' ); // true' –

+0

http://stackoverflow.com/questions/123559/a-comprehensive-regex-for-phone-number-validation –

+0

http://jsfiddle.net/RaKZg/你的正則表達式似乎通過你的示例字符串,儘管@Pointy提到,但它不會以雙零位領先 – smerny

回答

1

您的正則表達式不正確。此:

[00|+] 

相當於

[0|+] 

,意思是 「匹配單個字符要麼 '0', '|',或 '+'。」我想你想:

var check = /^(00|\+)(\d{2,3})-(\d{8,10)$/; 
0

這是您的模式轉移到RegEx:/(\+|00)\d{2,3}-{0,1}\d{8,10}$/。下面的例子。

var number = '+999-123456789'; 
 

 
if (number.match(/(\+|00)\d{2,3}-{0,1}\d{8,10}$/)) { 
 
    alert('Phone number valid!'); 
 
} else { 
 
    alert('Phone number invalid.'); 
 
}