2013-10-27 48 views
0

這裏是jQuery中的代碼:正則表達式檢查匹配不起作用

//Verify license number is only numbers 
    $('lic_num').keyup(function() { 
     var valid_lic_num = '/[0-9-]{3,20}/'; 
     var raw_text = $(this).val(); 
     $('#status').html(raw_text); 
     if (valid_lic_num.match(raw_text)) { 
      $('#status').html('Password regex okay'); 
     } else { 
      $('#status').html('License number regex failed'); 
     } 
    }); 

的目標是當用戶通過9進入0以外的任何字符或連字符,將其更改#status的內容顯示正則表達式是否通過。不工作。我究竟做錯了什麼?

+2

您正在做相反的事情。你想'raw_text.match(valid_lic_num)'。另外,你希望'valid_lic_num'是一個正則表達式,而不是一個字符串。 – numbers1311407

+1

嘗試'if(valid_lic_num.test(raw_text))' –

回答

1

從此改變你的正則表達式定義:

var valid_lic_num = '/[0-9-]{3,20}/'; 

這樣:

var valid_lic_num = /[0-9-]{3,20}/; 

當你把它周圍的報價中,JS解釋使它成爲一個字符串,而不是一個正則表達式。

另外,.match()是一個字符串方法,而不是一個正則表達式方法。您可以使用.test()而不是像這樣:

//Verify license number is only numbers 
$('lic_num').keyup(function() { 
    var valid_lic_num = /[0-9-]{3,20}/; 
    var raw_text = $(this).val(); 
    $('#status').html(raw_text); 
    if (valid_lic_num.test(raw_text)) { 
     $('#status').html('Password regex okay'); 
    } else { 
     $('#status').html('License number regex failed'); 
    } 
}); 
+0

就是這樣。新的正則表達式,並先試過測試,顯然,由於引用失敗,但我沒有意識到這一點。 –