2012-03-02 208 views
0

我有這樣的正則表達式的jQuery:正則表達式的字母,數字和字符的jQuery

var regx = /^[\w ._-]+$/; 

if($($input).val().match(regx)) { 
           alert('it works fine'); 
           } 
else 
    { 
    alert('it does not works fine'); 
    return false 
    e.preventDefault(); 
    } 

爲什麼,如果我在輸入某事寫這樣EJ:

Mary-Michael 

我得到與警報不工作正常,但如果我寫:

Mary.Michael or Mary_Michael 

我得到它工作正常

我想補充- 連字符到正則表達式。謝謝

+3

似乎爲我工作:http://jsfiddle.net/wv4qy/。錯誤必須在您未顯示給我們的部分。或者你沒有正確測試它。 – 2012-03-02 16:02:09

+0

@FelixKling有可能不同的JS引擎以不同的方式處理正則表達式? – Blazemonger 2012-03-02 16:05:12

+0

你是對的我在其他部分的代碼錯誤。謝謝! – hyperrjas 2012-03-02 16:05:43

回答

1

連字符在正則表達式(如[0-9])具有特殊的意義,所以你應該逃避它。對於這個問題,你也應該逃脫這段時間:

var regx = /^[\w \._\-]+$/; 
+0

謝謝你也工作得很好。該錯誤在其他代碼中。謝謝!! – hyperrjas 2012-03-02 16:06:11

+0

內部的字符類只有'^'和'-'具有特殊的含義,並且只有在特定的位置。這是'^'類的開始,'-'的兩個字符之間(表示一個範圍)。這裏的正則表達式是絕對正確的,沒有必要逃避這些字符。 – 2012-03-02 16:07:54

+0

內部字符類你做*不*有逃跑的週期,你沒有逃避連字符時,它後面緊跟']' – 2012-03-02 16:13:38

相關問題