繁体   English   中英

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

[英]Regular expression for validating decimal numbers

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

    return stringvar.test(number);
}

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

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

我认为这应该工作:

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

我刚刚尝试了这个,对我有用: ^[+-]?[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

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

在JavaScript中实现它的方法类似于: eval("var stringvar=^[-+]?[0-9]*.[0-9]{" + maxDigits + "}$"); ,或附近。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM