我有一个表单,其中的字段采用十进制值。此小数的所需要求是它的形式为##。##,小数点两边各有两个数字。
我在网上发现了一个应该验证小数的正则表达式,但是将任何输入视为无效。这是我的代码:
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;
}
我知道这个正则表达式并不是我正在寻找的,但我似乎无法弄清楚为什么它将所有输入视为无效。有谁知道我做错了什么?
答案 0 :(得分:6)
第一个问题是您忘记了输入的实际值:
document.getElementById('Amount').value
第二个问题是eval
,你在这里不需要它,你可以这样写:
var stringvar = /^[-+]?([0-9]*\.[0-9]{0,2})|([0-9]+)$/;
第三,如果您的号码必须总是为XX.XX
,我建议使用正则表达式:
/^[+-]?\d\d\.\d\d$/
答案 1 :(得分:0)
首先,你不应该像这样使用eval,它给客户带来了不必要的压力,只是做了
var regex = /^[-+]?([0-9]*\\.[0-9]{0,2})|([0-9]+)$/;
return regex.test(number);
代替。
您需要在.value
getElementById('Amount');