2012-09-20 36 views
0

我找到了a blog post,它顯示了創建國際電話號碼驗證的方法。提供的代碼是:如何修復舊的JavaScript來驗證國際電話號碼與jQuery驗證?

jQuery.validator.addMethod('intlphone', function(value) { return (value.match(/^((\+)?[1-9]{1,2})?([-\s\.])?((\(\d{1,4}\))|\d{1,4})(([-\s\.])?[0-9]{1,12}){1,2}(\s*(ext|x)\s*\.?:?\s*([0-9]+))?$/)); }, 'Please enter a valid phone number'); 

我相信它曾經爲我工作,但事情已經改變 - 可能是一個較新的jQuery的版本 - 我得到這個錯誤:

Uncaught SyntaxError: Invalid regular expression: /^((+)?[1-9]{1,2})?([-s.])?(((d{1,4}))|d{1,4})(([-s.])?[0-9]{1,12}){1,2}(s*(ext|x)s*.?:?s*([0-9]+))?$/: Nothing to repeat 

我創建了一個JSBin與我正在使用的項目,但我沒有任何運氣擺脫錯誤。

如何修復舊的JavaScript來驗證國際電話號碼與jQuery驗證?

ps:我相信我已經試過運行與以前版本的jQuery,我仍然收到錯誤。我不確定發生了什麼變化。

結束了使用此:

jQuery.validator.addMethod('intlphone', function(value) { return (value.match(/^((\+)?[1-9]{1,2})?([\-\s\.])?((\(\d{1,4}\))|\d{1,4})(([\-\s\.])?[0-9]{1,12}){1,2}(\s*(ext|x)\s*\.?:?\s*([0-9]+))?$/)); }, 'Please enter a valid phone number'); 
+1

它有幾個轉義'-'也許這就是問題所在。嘗試:'/ ^((\ +)?[1-9] {1,2})?([\ - \ s \。])?((\(\ d {1,4} \))| ?\ d {1,4})((\ - \ S \])[0-9] {1,12}){1,2}(\ S *(分機| x)的\ S * \。 ??:\ S *([0-9] +))$ /'? – elclanrs

回答

0

如這裏A comprehensive regex for phone number validation

說這將是一個更容易剝離非數字字符,並創建一個正則表達式匹配只有數字和擴展。

添加到您的函數開始,除去除了X以外的所有非數字: value.replace("[^\d+x]", "").match ....