Javascript函数需要允许数字,点和逗号

WVW*_*WVW 14 javascript regex numbers function

我需要创建一个允许数字点和逗号的函数.所以任何人都纠正了以下功能

function on(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();
  }
}
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 40

首先你的正则表达式目前不允许使用逗号,这是你的要求.

其次,你没有使用任何量词,所以你的正则表达式只匹配一个字符 - 一个[0-9]或一个dot.你需要使用量词.

第三,不是使用pipe,而是只能移动字符类中的所有字符.

尝试使用以下正则表达式:

/^[0-9.,]+$/
Run Code Online (Sandbox Code Playgroud)

量词+用于匹配模式的一次或多次出现.
^$锚点分别匹配字符串的开头和结尾.

  • 有没有办法限制只有一个点或一个逗号?在您的正则表达式中,12.34,45 是正确的 (2认同)

Nie*_*sol 7

不需要JavaScript:

<input type="text" pattern="[0-9.,]+" title="Please enter a valid decimal number." />
Run Code Online (Sandbox Code Playgroud)

现代浏览器将完美地处理这个.

如果你想特别允许逗号为千位分隔符和一个小数点,试试这个:

... pattern="\d{1,2}(,\d{3})*(\.\d+)?" ...
Run Code Online (Sandbox Code Playgroud)

请注意,我坚决反对阻止用户输入.他们应该能够输入他们想要的东西,然后告诉他们是否输入了无效的东西.


Mar*_*tin 6

在我看来,这是最好的解决方案,涵盖了更多输入和允许浮动的情况.

     $( ".numerical" ).on('input', function() { 
                var value=$(this).val().replace(/[^0-9.,]*/g, '');
                value=value.replace(/\.{2,}/g, '.');
                value=value.replace(/\.,/g, ',');
                value=value.replace(/\,\./g, ',');
                value=value.replace(/\,{2,}/g, ',');
                value=value.replace(/\.[0-9]+\./g, '.');
                $(this).val(value)

        });
Run Code Online (Sandbox Code Playgroud)