用于验证小数的Regexp不起作用

Regexp for validating decimals not working

本文关键字:Regexp 不起作用 小数 验证 用于      更新时间:2023-09-26

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

我在网上找到了一个regex,它本应验证小数,但却将任何输入视为无效。这是我的代码:

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;
}

我知道这个正则表达式并不是我想要的,但我似乎不明白为什么它认为所有输入都是无效的。有人知道我做错了什么吗?

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

document.getElementById('Amount').value

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

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

第三,如果您的数字必须始终XX.XX:,我建议使用正则表达式

/^[+-]?'d'd'.'d'd$/

首先,您不应该像那样使用eval,它会给客户端带来不必要的压力,只需执行即可

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

相反。

并且您需要在getElementById('Amount'); 之后使用.value