2015-05-30 58 views
-1

我正在使用一個正則表達式來檢查一個4位數字,但在我的代碼==-1被使用,我很困惑它的工作原理。當輸入框中輸入的數字小於4位時,我認爲會彈出警報,但當輸入的數字超過4位時,警報也會彈出。我想知道背後返回-1是什麼意思在正則表達式搜索

function checkpostal(){ 
    var re4digit=/^\d{4}$/ //regular expression defining a 4digit number between beginning and end value 

    if (document.myform.myinput.value.search(re4digit)==-1) //if match failed 
    alert("Please enter in a 4 digit number"); 
} 
+2

只是一個說明。 '.test'對於排斥檢查會更好。 – Downgoat

+0

謝謝,不知道存在。 – Tnoz

+0

爲什麼使用正則表達式? –

回答

0

邏輯當Chrome瀏覽器的控制檯測試您的正則表達式,我得到了以下結果:

> "1233334".search(/^\d{4}$/) 
-1 
> "124".search(/^\d{4}$/) 
-1 
> "124444".search(/^\d{4}$/) 
-1 
> "4444".search(/^\d{4}$/) 
0 
> "44444".search(/^\d{4}$/) 
-1 

-1表示你正在尋找的表達沒有被發現在你正在測試你的正則表達式的字符串中。

您的正則表達式查詢正在搜索您正在測試的字符串,其中正好是 4位數字。這意味着當你測試大於或小於4位數的東西時,.search(r4digit)將返回-1。

這與JavaScript的String.prototype.indexOf函數類似,它在沒有找到子字符串時也返回-1;這只是一種簡單的方式,說搜索一路走到最後,一無所獲。

+0

你能解釋爲什麼它顯示-1。爲什麼它不顯示0? – Downgoat

+0

'.search'和'.indexOf'返回字符串中的位置。如果不是我的字符串,它會說它在'-1'處,因爲0是Strings/Arrays開始的地方 – Downgoat

相關問題