我有一个正则表达式来检查输入的价格。价格不能是 5 位数或更多,但可以包含选项十进制数。所以 -
- 1000 = 允许
- 9999.99 = 允许
- 10000 = 不允许
- 100.000 = 不允许
这是我到目前为止所拥有的,它正在正确检查小数位数,但没有检查小数位前的位数。我究竟做错了什么?
var reg = new RegExp("^(\d{0,4})+(\.[0-9]{2})?$");
我有一个正则表达式来检查输入的价格。价格不能是 5 位数或更多,但可以包含选项十进制数。所以 -
这是我到目前为止所拥有的,它正在正确检查小数位数,但没有检查小数位前的位数。我究竟做错了什么?
var reg = new RegExp("^(\d{0,4})+(\.[0-9]{2})?$");
你有一个错误的量词
var reg = new RegExp("^(\d{0,4})(\.[0-9]{2})?$");
只需删除+
,您的正则表达式就可以了。
这样(\d{0,4})+
,您将重复您的第一组,因此您可以匹配点之前的任意数量的数字。
如果我双重转义,您的 jsfiddle 对我有用
var reg = new RegExp("^\\d{0,4}(?:\\.\\d{2})?$");
或者不要把你的正则表达式放在一个字符串中
var reg = new RegExp(/^(\d{0,4})(\.[0-9]{2})?$/);