Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数需要允许数字、点和逗号_Javascript_Regex_Function_Numbers - Fatal编程技术网

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

Javascript函数需要允许数字、点和逗号,javascript,regex,function,numbers,Javascript,Regex,Function,Numbers,我需要创建一个函数来允许数字点和逗号。所以有人修正了下面的函数吗 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.returnValu

我需要创建一个函数来允许数字点和逗号。所以有人修正了下面的函数吗

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();
  }
}

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

其次,您没有使用任何量词,因此您的正则表达式将只匹配一个字符-一个
[0-9]
或一个
点。你需要使用量词

第三,不使用
管道
,您只能在character类中移动所有字符

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

/^[0-9.,]+$/
量词
+
用于匹配模式的一个或多个匹配项。

^
$
锚分别匹配字符串的开头和结尾。

您的正则表达式不正确

var regex = /^[0-9.,]+$/;


无需使用JavaScript:

<input type="text" pattern="[0-9.,]+" title="Please enter a valid decimal number." />

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

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

     $( ".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)

        });

有时
/^[0-9.,]+$/
不起作用 如果没有,那么您可以这样做:

/^(?:[\d-]*,?[\d-]*\.?[\d-]*|[\d-]*\.[\d-]*,[\d-]*)$/

我为遵循
COMMA9.2

示例

  • 1350.88
  • 120.00
  • 1500999.24
  • 100
  • 10000000
  • RegEx


    ^(\d+\d{1,3}、\d{3}、\d{1,3}、\d{3}、\d{1,3}(,\d{3})*\.\d{1,3}(,\d{3})*.\d+$

    有没有办法只限制一个点或一个逗号?在您的正则表达式中,12.34,45是正确的。我假设在大多数情况下,我们必须使用
    /^[0-9.,]*$/
    这不允许使用负数。这一个非常适用于小数和句点!谢谢
    /^(?:[\d-]*,?[\d-]*\.?[\d-]*|[\d-]*\.[\d-]*,[\d-]*)$/