无法理解为什么Javascript正则表达式无法正常工作

Dou*_*ran 0 javascript regex

我想验证一些输入以检查它是否为格式的正货币值:

0.5,0.55,5(注意这一个)5.5,5.55,55等等等等.

我正在使用的代码是:

  if ($("#gross").val()>0 && !/^\d+?\.?\d?\d$/.test($("#gross").val())) {
    alert($("#gross").val() + " is invalid currency");
  }
Run Code Online (Sandbox Code Playgroud)

它适用于除一个数字之外的所有内容,例如5(和5.),但确实有效5.5.

我究竟做错了什么?

Qan*_*avy 7

你忘了?在最后添加一个$.更好的方法是:

/^\d+?\.?\d{0,2}$/
Run Code Online (Sandbox Code Playgroud)

这将检查该号码最多有两个小数位 - 如果您想检查任何金额,您可以使用以下内容:

/^(?!\.$)(?:(?!0\d)(\d*)\.?(\d[0-9]*))$/
Run Code Online (Sandbox Code Playgroud)

请注意,将字符串显式转换为数字,并缓存值的值是个好主意#gross.

var grossVal = $("#gross").val();
if (+grossVal > 0 && !/^\d+?\.?\d{0,2}$/.test(grossVal)) {
    alert(grossVal + " is invalid currency");
}
Run Code Online (Sandbox Code Playgroud)