2015-04-02 221 views
0

我知道有很多與驗證相關的問題,但是在看過這麼多以後,我似乎無法解決這個問題。驗證RegExp問題

我想匹配一個郵政編碼正則表達式我找到了。小提琴表示,郵政編碼是無效的,但是當我測試上rubular.com正則表達式,它工作正常

Rubular Image

JS小提琴https://jsfiddle.net/aeqawadv/1/

<div id="test"></div> 

<script type="text/javascript"> 
    var string = "SK13 6NT"; 
    var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$i/); 
    if (ukPostcode.test(string)) { 
     document.getElementById("test").innerHTML="Valid"; 
    } else { 
     document.getElementById("test").innerHTML="Invalid"; 
    } 
</script> 

任何想法?我也試着匹配()的反對,以測試()

編輯

剛剛意識到我是用rubular代替scriptular但是,結果還是一樣

回答

1

你有我」 「在你的美元符號結束後。

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$i/); 

應該

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/); 

或者(如果你瞄準不區分大小寫)

var ukPostcode = new RegExp(/^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/i); 
+1

或者也許它應該是一個不區分大小寫的標誌。那麼'i'應該出現在第二個'/'之後。 – Oriol 2015-04-02 19:13:42

+0

謝謝,這有幫助。愚蠢的錯誤! – DannyDanDan 2015-04-02 19:16:02

1

您的字符串$錨結束後取出i,爲什麼不使用正則表達式文字?

var ukPostcode = /^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/ 

如果i本來是要作爲不區分大小寫的改性劑,將其放到分隔符之後。

var ukPostcode = /^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}$/i 
+0

謝謝,這有幫助。愚蠢的錯誤! – DannyDanDan 2015-04-02 19:16:05