2013-02-22 101 views
1

我試圖使用regex以下格式驗證電話號碼。但是在某些情況下它失敗了。用於驗證電話號碼的正則表達式失敗

電話號碼:

2323232 
0112323232 
011-2323232 
+91-9898989898 
98989898998 

我寫這篇regex上面提到的數字:

^[+]?(\d{2,4}-)?(\d{7,11}) 

測試它here

我在下面的代碼段用於:

var phonePattern = /^[+]?(\d{2,4}-)?(\d{7,11})/; 
if(!(phonePattern.test(formData.phone))){ 
    $('#errorList').append('<li>Invalid Phone Number</li>'); 
    error = 1; 
} 

正則表達式正常工作,因爲我需要的電話號碼,但它也爲formData.phone = '011-2323232asdasd'返回true。我是regex的新手,在javascript中的用法。我怎樣才能使它工作?請指教。

回答

1

你需要把錨在兩個端(如^<a-regex-goes-here>$,否則將使賽後垃圾。

1

在你的正則表達式的末尾添加$^[+]?(\d{2,4}-)?(\d{7,11})$

這意味着「文本/行尾」,所以你的正則表達式將要求只有數字,直到字符串的結尾。

0

試試這個表達式/^((\+91)?-?[0\+\(]*\d{2,3}[-\s\)]*\.?\d{3,4}[-\s]*\.?[0-9]{4})$/這將爲所有類型的有效工作電話號碼。

返回true下面的條件:

1. Just 10 digits 
2. +00 0000 0000 
3. +1 000 000 000 
4. (3 digits)<space>(3 digits)<space>4 digits 
5. (3 digits) - 3 digits - 4 digits 
6. +91-9898989898 

而且很多..

0

我想你已經錯過到底$。 使用:

^[+]?(\d{2,4}-)?(\d{7,11})$