用于验证十进制数的正则表达式

时间:2012-08-10 06:00:56

标签: javascript regex

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

    return stringvar.test(number);
}

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

3 个答案:

答案 0 :(得分:3)

不进入正则表达式,我认为你的代码中的问题是你应该两次逃避特殊字符。由于您将所有内容都放在字符串中,因此字符串解析会转义单个反斜杠。

我认为这应该有效:

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

答案 1 :(得分:0)

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

在我的情况下,我做了一个小修改,你似乎匹配十进制数字或整数。在我的例子中,我修改了正则表达式,使用可选的小数部分取整数。

按原样,正则表达式将匹配以下值:.22223.22222但不匹配4d.2222233.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

答案 2 :(得分:0)

此正则表达式将使用maxDigits小数验证数字: ^[-+]?[0-9]*.[0-9]{10}$。这将验证它到10位小数。

将其实现为JavaScript将如下所示: eval("var stringvar=^[-+]?[0-9]*.[0-9]{" + maxDigits + "}$");,或其左右。