2014-03-30 27 views
1
'^[AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]{1}\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}[ -]*\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}\d{1}$' 

上述正則表達式接受像.net形式的T3K2H3或T3K-2H3的輸入,但是當我通過JavaScript運行驗證;這是行不通的。javascript的正則表達式無法正常工作與郵政編碼

var rxPostalCode = new RegExp('^[AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]{1}\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}[ -]*\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}\d{1}$'); 

var postalCode = 't3k2h3'; 

var matchesPostalCode = rxPostalCode.exec(postalCode); 

if (matchesPostalCode == null || postalCode != matchesPostalCode[0]) { 

    $scope.AccountInfoForm.PostalCode.$setValidity("pattern", false); 

    $scope.showLoading = false; 

    return false; 
} 
+0

根據在線正則表達式驗證您的正則表達式應匹配,請參閱http://regex101.com/r/zN7iX0 – donfuxx

+0

@ donfuxx,我改變了我的答案,以解決另一個問題,我認爲是原因 – sshashank124

回答

0

我相信,在JavaScript中,你所要做的//代替''

如下:

/^[AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]{1}\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}[ -]*\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}\d{1}$/

您可能要查看以下鏈接:

Validate email address in JavaScript?

+0

這不尊重類在OP的問題 – axelduch

+0

中定義好像不是想要的,因爲看起來像'd'' q'等字母不是想要的。另外部分:'[ - ]'看起來應該是可選的 – donfuxx

+0

@donfuxx,謝謝,我會做出這些改變 – sshashank124

0

你有兩種語法定義RegExp對象:

var rxPostalCode = /^[abceghj-np-tvxy]\d[abceghj-np-tv-z][ -]?\d[abceghj-np-tv-z]\d$/i; 

var rxPostalCode = new RegExp('^[abceghj-np-tvxy]\\d[abceghj-np-tv-z][ -]?\\d[abceghj-np-tv-z]\\d$', 'i'); 

注意,與第二個語法,你需要使用雙反斜線。

0

請嘗試以下方式:

​​

末刪除$,看看是否能解決您的問題。

我也得到了簡化的東西了一下,\d{1}相同\d

我也將改變[ -]*[ -]?,除非你想允許多個空格或破折號

我懷疑正在發生的事情是, $期望行或字符串結束,JavaScript可能無法正確存儲VAR。看看是否刪除$解決它,或者可能保留$和trim()字符串。

0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

「不要忘了逃走\本身在使用正則表達式(」模式「)符號,因爲\也是字符串轉義字符。」

var rxPostalCode = new RegExp('^[AaBbCcEeGgHhJjKkLlMmNnPpRrSsTtVvXxYy]{1}\\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}[ -]*\\d{1}[AaBbCcEeFfGgHhJjKkLlMmNnPpRrSsTtVvWwXxYyZz]{1}\\d{1}$'); 

這應該可行,我在Chrome的控制檯中進行了測試。

相關問題