2013-01-23 126 views
3

我的正則表達式,它允許字符,數字,點和下劃線是正則表達式,它允許退格

var numericReg = /^[a-zA-Z0-9\._]+$/; 

我怎麼能允許這個REG前退格?

+1

在正則表達式中有* backspace *的意義是什麼?那麼*刪除*然後呢?我想你的問題可以用不同的方式解決,如果你告訴更多的話。 – VisioN

+1

問題是當我在一個空的文本框中按退格正則表達式驗證它並拋出錯誤 – Amith

回答

0

此問題的最佳解決方案是在驗證之前檢查文本框的值> 0。這將有助於解決在空白文本框中按退格時顯示的錯誤。

18

您可以使用[\b]來匹配退格。所以,僅僅把它添加到你的性格類: -

var numericReg = /^[a-zA-Z0-9._\b]+$/; 

請注意,您不需要在字符類逃脫dot (.)。那裏沒有特別的意義。

參見: -

更多轉義序列,和模式的正則表達式。

+1

@TimPietzcker ..我沒有測試它,但它應該工作。在那個頁面中,它在桌子的某個地方被提到。請再看看。它說: - '[\ b]'匹配反斜槓。 –

+0

對。找到了。 –

+1

@RohitJain **它說: - [\ b],匹配反斜槓。**你的意思是退格,對嗎? –

0

我建議你重寫你的正則表達式:

var numericReg = /^[a-zA-Z0-9._]+|[\b]+$/ 

或者:

var numericReg = /^(?:[a-zA-Z0-9._]|[\b])+$/ 
0

對證 'event.keyCode' 和檢查正則表達式之前 'value.length'。
密鑰號碼8 =反斜槓

$('#my-input').on('keypress change', function(event) { 
    // the value length without whitespaces: 
    var value_length = $(this).val().trim().length; 
    // check against minimum length and backspace 
    if (value_length > 1 && event.keyCode != 8) { 
     var regex = new RegExp('/^[a-zA-Z0-9\._]+$/'); 
     var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); 
     if (!regex.test(key)) { 
     event.preventDefault(); 
     return false; 
     } 
    } 
} 
0

我還提出,僅接受號碼(非十進制)和退格鍵盤輸入文本類型。我注意到,在非Firefox瀏覽器中不需要在正則表達式中放置[\ b]。

var regExpr = new RegExp("^[0-9,\b][0-9,\b]*$");