为啥加号运算符在 JavaScript 的正则表达式中不起作用? [复制]
Posted
技术标签:
【中文标题】为啥加号运算符在 JavaScript 的正则表达式中不起作用? [复制]【英文标题】:Why the plus operator not working in regex in JavaScript? [duplicate]为什么加号运算符在 JavaScript 的正则表达式中不起作用? [复制] 【发布时间】:2019-01-01 23:48:57 【问题描述】:我是 javascript 新手,我制作了正则表达式来验证例如十进制值。 (10.12, 100.22, 5.5 etc)
。它接受 3 位数字和 2 位小数。我在https://regex101.com/ 上测试了这个正则表达式,它工作正常。
/^[0-9]1,3+(\.[0-9]1,2)?$/
但是当我在 Vue 中使用这个正则表达式时,问题就来了,正则表达式中使用的加号 (+
) 运算符给出了错误:
Invalid regular expression: /^[0-9]1,3+(\.[0-9]1,2)?$/: Nothing to repeat
【问题讨论】:
在 regex101.com 中从 php 切换到 javascript - 它也抱怨语法 拥有“1 到 3 个数字,至少一次”有什么意义?这与“1 个或多个数字”相同! 我在regex101.com 上测试了这个正则表达式,它工作正常。 - 不,it does not 如果你测试正确。 【参考方案1】:+
表示在这种情况下不需要“一个或多个”,因为您需要完全匹配一个。
在第一部分周围添加圆括号以匹配整数和小数部分。
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)?$/);
console.log(m1, m2);
【讨论】:
正确答案是删除+
。量化 (^[0-9]1,3)
没有意义(尽管会产生正确的结果),因为 字符串开头 位置不能超过 1 个。
确实如此。如果要匹配数字的整数部分和小数部分,则需要括号以上是关于为啥加号运算符在 JavaScript 的正则表达式中不起作用? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥表达式逻辑表达式`product.id === +id;`中的加号? [复制]