1
函数 validateDecimal(数字,maxDigits)
{
    eval("var stringvar=/^[-+]?([0-9]*\.[0-9]{0,"+maxDigits+"})|([0-9]+)$/");

    返回 stringvar.test(number);
}

我写了上面的函数来验证十进制数。变量'maxDigits'用于指定小数部分的位数,'number'作为要验证的值。但是当我尝试使用一个数值后跟一个字符时它返回“true”,例如:24y。谁能帮我弄清楚我的错误。

4

3 回答 3

3

在不进入正则表达式的情况下,我认为您的代码中的问题是您应该两次转义特殊字符。由于您将其全部放在字符串中,因此字符串解析会转义单个反斜杠。

我认为这应该有效:

eval("var stringvar=/^[-+]?([0-9]*\\.[0-9]{0,"+maxDigits+"})|([0-9]+)$/");
于 2012-08-10T06:09:11.047 回答
0

我刚刚尝试过这个,它对我有用:^[+-]?[0-9]*(\.[0-9]{0,5})?$

在我的情况下,我做了一个小的修改,你似乎匹配一个十进制数或一个整数。就我而言,我修改了正则表达式以采用带有可选小数部分的整数。

照原样,正则表达式将匹配诸如: 之类的值.22223.22222但不匹配4d.22222,33.333333等。

var n1 = "4.33254";
var n2 = "4d.55";

eval("var stringvar=/^[+-]?[0-9]*(\\.[0-9]{0,5})?$/");
alert(stringvar.test(n1));
alert(stringvar.test(n2));

产量:truefalse分别。

于 2012-08-10T06:04:23.963 回答
0

此正则表达式将验证带有 maxDigits of decimals: 的数字 ^[-+]?[0-9]*.[0-9]{10}$。这将验证它到小数点后 10 位。

在 JavaScript 中实现它看起来像: eval("var stringvar=^[-+]?[0-9]*.[0-9]{" + maxDigits + "}$");,或者差不多。

于 2012-08-10T06:05:58.407 回答