[英]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})?$
。
在我的情况下,我做了一个小的修改,您似乎匹配的是十进制数字或整数。 就我而言,我修改了正则表达式以采用带可选小数部分的整数。
如,正则表达式匹配等的值: .222
, 23.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));
产生:分别为true
和false
。
此正则表达式将使用带有小数的maxDigits验证数字: ^[-+]?[0-9]*.[0-9]{10}$
。 这将验证它到小数点后十位。
在JavaScript中实现它的方法类似于: eval("var stringvar=^[-+]?[0-9]*.[0-9]{" + maxDigits + "}$");
,或附近。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.