Javascript 数值的正则表达式;最多小数点后3位

Javascript 数值的正则表达式;最多小数点后3位,javascript,regex,validation,Javascript,Regex,Validation,我正在尝试使用正则表达式验证表单,条件是: 它必须是一个数值 它最多可以有三位小数(也可以是0,1,2) 它必须被逗号(,)除 我已经使用HTML5模式实现了以下功能: pattern='\d+(,\d{1,3})?' 由于IE9不支持模式,我尝试使用js: var numPattern = /\d+(,\d{1,3})?/; if(!numPattern.test(menge.val())) { checkvalidate = false; } 我哪里出错了 例子 有效期:12

我正在尝试使用正则表达式验证表单,条件是:

  • 它必须是一个数值
  • 它最多可以有三位小数(也可以是0,1,2)
  • 它必须被逗号(,)除
我已经使用HTML5模式实现了以下功能:

pattern='\d+(,\d{1,3})?'
由于IE9不支持模式,我尝试使用js:

var numPattern = /\d+(,\d{1,3})?/;
if(!numPattern.test(menge.val()))
{
    checkvalidate = false;
}
我哪里出错了

例子 有效期:1234;2,00 ; 5.0,1
无效:12345;2.00 ; 56a

您需要以
^
开始正则表达式,以
$
结束正则表达式,以确保整个输入字符串/行匹配

/^\d+(,\d{1,3})?$/
这是一个“演示”,其中所有示例都有效/无效:

(使用regex101.com调试正则表达式模式通常非常有用)

注意:(没有
^
$

但是:(使用
^
$


您可以使用此正则表达式:

/^\d+(?:,\d{1,3})*$/

您可以使用RegExp对象

var str = "123545,123";
var patt = new RegExp("/^(?:\d*\,\d{1,3}|\d+)$/");
var res = patt.test(str);
执行后,res将为true,因为str与您要查找的模式匹配,

请尝试以下表达式:

\d+(,\d{3})*([.]\d{1,3})?
有效例子:

1,200.123
1,200.12
1,200.1
1.123
1,200,222
1,200,002

发布一些有效和无效的示例。如果要验证,可能需要在表达式开头添加
^
,在表达式末尾添加
$
,以匹配整个字符串。
\d+(,\d{3})*([.]\d{1,3})?
1,200.123
1,200.12
1,200.1
1.123
1,200,222
1,200,002