2014-02-22 149 views
1

我已經看到很多帖子貼近我正在尋找的內容,但我仍然收到錯誤,並希望得到一些正則表達式的幫助。我有一個表單域,需要允許字母數字,空格和破折號。理想情況下,空格和破折號不會連續。正則表達式:字母數字空格和連字符短劃線

我想讓它在關鍵幀上觸發,以便用戶沒有選擇鍵入這些禁止的字符。

這是我到目前爲止,但我拋出錯誤轉義錯誤,此代碼不起作用在Firefox中。謝謝你的幫助!

$('#your_name').keypress(function (e) { 
    var allowedChars = new RegExp("^[a-zA-Z0-9\-\ ]+$"); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (allowedChars.test(str)) { 
     return true; 
    } 
    e.preventDefault(); 
    return false; 
}).keyup(function() { 
    var forbiddenChars = new RegExp("[^a-zA-Z0-9\-\ ]", 'g'); 
    if (forbiddenChars.test($(this).val())) { 
     $(this).val($(this).val().replace(forbiddenChars, '')); 
    } 
}); 

回答

1

試試這個:

$('#your_name').keyup(function (e) { 
    var allowedChars = /^[a-z\d -]+$/i; 
    var str = String.fromCharCode(e.charCode || e.which); 

    var forbiddenChars = /[^a-z\d -]/gi; 
    if (forbiddenChars.test(this.value)) { 
     this.value = this.value.replace(forbiddenChars, ''); 
    } 

    if (allowedChars.test(str)) { 
     return true; 
    } 

    e.preventDefault(); 
    return false; 
}); 
相關問題