JavaScript中允许退格键的正则表达式

9

我的正则表达式允许字符、数字、句点和下划线:

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

如何在这个正则表达式中允许退格键?


1
在正则表达式中使用退格键有什么用?那么删除键呢?如果您多提供一些详细信息,我猜您的问题可以用不同的方式解决。 - VisioN
1
问题在于当我在空文本框中按下退格键时,正则表达式会对其进行验证并抛出错误。 - Amith
5个回答

22

您可以使用[\b]来匹配退格符。因此,只需将其添加到您的字符类中:-


var numericReg = /^[a-zA-Z0-9._\b]+$/;
请注意,在字符类中您不需要转义点(.)。它在其中没有特殊含义。

另请参阅:-

了解更多转义序列和正则表达式中的模式。


1
@TimPietzcker.. 我没有测试过,但应该可以工作。在那个页面中,它在表格下面的某个地方提到。请再仔细看一遍。它说:- [\b],匹配反斜杠。 - Rohit Jain
1
@RohitJain 它说: - [\b],匹配反斜杠。 你是指退格键,对吗? - Naveed S
@NaveedS.. 哎呀!没错。又是那个打字错误。 - Rohit Jain
@Amith.. 你试过我给的正则表达式了吗? - Rohit Jain
我在一个表单中有一个文本框。在按键时,我正在验证不要输入特殊字符、数字等。如果用户输入他的名字并想要删除它,他按退格键,当他删除文本框中的最后一个字符“amith”并再次按退格键删除“a”时,会抛出验证错误。 - Amith
显示剩余4条评论

1
我建议您将正则表达式重写为:

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

或者:

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

这对我有用。谢谢分享 :) - Lojith Vinsuka

1

在检查正则表达式之前,请检查'event.keyCode'和'value.length'。
Keycode 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
这个问题的最佳解决方案是在验证之前检查文本框的值是否大于0。这将有助于解决在空文本框中按退格键时显示错误的问题..!!

0

我还制作了一个只接受数字(非小数)和退格键的文本输入类型。我注意到在非火狐浏览器中,在正则表达式中加入 [\b] 是不必要的。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接