0

我有一个正则表达式来检查输入的价格。价格不能是 5 位数或更多,但可以包含选项十进制数。所以 -

  • 1000 = 允许
  • 9999.99 = 允许
  • 10000 = 不允许
  • 100.000 = 不允许

这是我到目前为止所拥有的,它正在正确检查小数位数,但没有检查小数位前的位数。我究竟做错了什么?

var reg = new RegExp("^(\d{0,4})+(\.[0-9]{2})?$");
4

1 回答 1

3

你有一个错误的量词

var reg = new RegExp("^(\d{0,4})(\.[0-9]{2})?$");

只需删除+,您的正则表达式就可以了。

在 Regexr 上查看

这样(\d{0,4})+,您将重复您的第一组,因此您可以匹配点之前的任意数量的数字。

如果我双重转义,您的 jsfiddle 对我有用

var reg = new RegExp("^\\d{0,4}(?:\\.\\d{2})?$");

或者不要把你的正则表达式放在一个字符串中

var reg = new RegExp(/^(\d{0,4})(\.[0-9]{2})?$/);
于 2012-12-17T12:28:41.550 回答