Regexp用于验证小数不起作用

mac*_*lin 1 javascript

我有一个表单,其中的字段采用十进制值.此小数的所需要求是它的形式为##.##,小数点两边各有两个数字.

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

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

return stringvar.test(number);
}
Run Code Online (Sandbox Code Playgroud)

电话......

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

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

elc*_*nrs 6

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

document.getElementById('Amount').value
Run Code Online (Sandbox Code Playgroud)

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

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

第三,如果您的号码必须始终XX.XX:我提出的正则表达式是:

/^[+-]?\d\d\.\d\d$/
Run Code Online (Sandbox Code Playgroud)