2016-04-26 92 views
0

我想驗證英國郵政編碼使用JavaScript,據我所知,在堆棧上的線程閱讀,以下應該工作正常。然而,無論我迄今爲止嘗試過的有效英國郵政編碼如何,if語句都會失敗。我有點福利局Javascript代碼,Javascript正則表達式失敗,但不知道爲什麼

var postcode = $("#postcode").val().toUpperCase(); 
var regex = new RegExp("^((GIR &0AA)|((([A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]))) &[0-9][ABD-HJLNP-UW-Z]{2}))$"); 

    if(regex.test(postcode)){ 
     alert('yes'); 
    } else { 
     alert('no'); 
    } 
+1

檢查:英國的Javascript正則表達式的郵政編碼(http://stackoverflow.com/questions/11081786/javascript-uk-postcode-regex) – smerny

+0

同意@MarioLopez的'&'看起來不合適。 – sln

+0

在問題中添加有關空格的詳細信息 –

回答

0

正如在評論中提到,你的問題似乎是與號&。一定程度的簡化和糾正我相信你的正則表達式應該是:

^(GIR 0AA|(?:[A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?|[A-PR-UWYZ][0-9][A-HJKSTUW]|[A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]) [0-9][ABD-HJLNP-UW-Z]{2})$ 

捕捉整體價值,從線到結束的開始時,它匹配

通匯轉帳制的PC

其中一種組合(se由非捕獲組(?:...)內部的|配對),接着終止space, digit, letter, letter

希望這會有所幫助。

問候