1

我有一个表单,其中包含一个十进制值的字段。对这个小数的要求是它的格式为##.##,小数点两边各有两个数字。

我在网上找到了一个应该验证小数点的正则表达式,但将任何输入视为无效。这是我的代码:

function validateDecimal(number)
{
eval("var stringvar=/^[-+]?([0-9]*\\.[0-9]{0,2})|([0-9]+)$/");

return stringvar.test(number);
}

还有电话...

var numStr = document.getElementById('Amount');
if (!validateDecimal(numStr)) {
    alert("Please enter a valid dollar amount in the form ##.##");
    return false;
}

我知道这个正则表达式并不是我正在寻找的,但我似乎无法弄清楚为什么它将所有输入视为无效。有谁知道我做错了什么?

4

2 回答 2

6

第一个问题是您忘记获取输入的实际值:

document.getElementById('Amount').value

第二个问题是eval,这里不需要,可以这样写:

var stringvar = /^[-+]?([0-9]*\.[0-9]{0,2})|([0-9]+)$/;

第三,如果您的号码必须始终是,这是我建议的正则表达式XX.XX

/^[+-]?\d\d\.\d\d$/
于 2013-07-26T23:22:40.287 回答
0

首先,你不应该那样使用 eval ,它会给客户带来不必要的压力,只是做

var regex = /^[-+]?([0-9]*\\.[0-9]{0,2})|([0-9]+)$/;
return regex.test(number);

反而。

你需要使用.value之后getElementById('Amount');

于 2013-07-26T23:18:56.493 回答