JavaScript只允许数字、逗号、点和退格

JavaScript只允许数字、逗号、点和退格,javascript,regex,Javascript,Regex,我编写了一个javascript函数,只允许像这样的数字、逗号和点 function isNumber(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode(key); var regex = /^[0-9.,]

我编写了一个javascript函数,只允许像这样的数字、逗号和点

function isNumber(evt) {
              var theEvent = evt || window.event;
              var key = theEvent.keyCode || theEvent.which;
              key = String.fromCharCode(key);
              var regex = /^[0-9.,]+$/;
              if (!regex.test(key)) {
                  theEvent.returnValue = false;
                  if (theEvent.preventDefault) theEvent.preventDefault();
              }

}
但是如果我想从文本框中删除任何数字。。退格无效。然后我将regex代码更改为“
var regex=/^[0-9.,BS]+$/;

我仍然不能在文本框中使用退格。即使我不能在文本框中使用左右键,我是否做错了?有人能帮忙吗。。。谢谢(当我在正则表达式中使用“BS”而不是在文本框中使用“B”、“S”字符时…)

尝试以下代码:

function isNumber(evt) {
          var theEvent = evt || window.event;
          var key = theEvent.keyCode || theEvent.which;
          key = String.fromCharCode(key);
          if (key.length == 0) return;
          var regex = /^[0-9.,\b]+$/;
          if (!regex.test(key)) {
              theEvent.returnValue = false;
              if (theEvent.preventDefault) theEvent.preventDefault();
          }
}

试试这段代码,我修改了它,并为我工作,只允许和逗号,点和数字

function isNumber(evt) {
   var theEvent = evt || window.event;
   var key = theEvent.keyCode || theEvent.which;            
   var keyCode = key;
   key = String.fromCharCode(key);          
   if (key.length == 0) return;
   var regex = /^[0-9.,\b]+$/;            
   if(keyCode == 188 || keyCode == 190){
      return;
   }else{
      if (!regex.test(key)) {
         theEvent.returnValue = false;                
         if (theEvent.preventDefault) theEvent.preventDefault();
      }
    }    
 }

我无法测试它,但是您可以尝试使用regex
/^[0-9.,\b]+$/
来代替它吗?谢谢,它可以退格工作。但我仍然无法在文本框中向左或向右移动游标。如果您使用的是
jquery
,请尝试插件不要打扰用户,您只关心它发送到服务器时的值。嗅探击键不会检查通过其他方式输入的输入。相反,提供屏幕上的格式提示,在发送前验证输入,并让用户了解它。@vishnureddy-Ouch,你也在验证吗?我认为你不应该用正则表达式来做这些。我对JQuery不是很熟悉,但是RobG说的有道理。这不允许逗号或点