为什么plus操作符不在JavaScript中的正则表达式中工作?

为什么plus操作符不在JavaScript中的正则表达式中工作?,javascript,regex,Javascript,Regex,我是JavaScript新手,我使用正则表达式来验证十进制值,例如(10.12、100.22、5.5等)。它接受3位数字和2位小数。我在上测试了这个正则表达式,它工作得很好 /^[0-9]{1,3}+(\.[0-9]{1,2})?$/ 但当我在Vue中使用这个正则表达式时,问题就出现了,正则表达式中使用的加号(+)操作符给出了一个错误: Invalid regular expression: /^[0-9]{1,3}+(\.[0-9]{1,2})?$/: Nothing to repeat

我是JavaScript新手,我使用正则表达式来验证十进制值,例如
(10.12、100.22、5.5等)
。它接受3位数字和2位小数。我在上测试了这个正则表达式,它工作得很好

/^[0-9]{1,3}+(\.[0-9]{1,2})?$/
但当我在Vue中使用这个正则表达式时,问题就出现了,正则表达式中使用的加号(
+
)操作符给出了一个错误:

Invalid regular expression: /^[0-9]{1,3}+(\.[0-9]{1,2})?$/: Nothing to repeat 

在这种情况下,表示“一个或多个”的
+
不是必需的,因为您需要精确匹配一个

在第一部分周围添加圆括号,以匹配整数和小数部分

var n='120.50';
var m1=n.match(/^[0-9]{1,3}(\.[0-9]{1,2})$/);
var m2=n.match(/(^[0-9]{1,3})(\[0-9]{1,2})$/);

控制台日志(m1,m2)在regex101.com中从php切换到javascript-它抱怨语法错误“1到3个数字,至少一次”有什么意义?这与“1个或多个数字”相同!我在上测试了这个正则表达式,效果很好如果测试正确,则不会。正确答案是删除
+
。量化
(^[0-9]{1,3})
没有意义(尽管会产生正确的结果),因为字符串的起始位置不能超过1个。这是事实。如果要匹配数字的整数部分和小数部分,则需要括号