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

Regular expression for validating decimal numbers

本文关键字:正则表达式 十进制数 验证 用于      更新时间:2023-09-26
函数验证十进制(数字,最大数字){    eval("var stringvar=/^[-+]?([0-9]*''.[0-9]{0,"+maxDigits+"})|([0-9]+)$/");    返回 stringvar.test(number);}

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

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

我认为这应该有效:

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

此正则表达式将验证小数位数为最大值的数字: ^[-+]?[0-9]*.[0-9]{10}$ . 这会将其验证为小数点后 10 位。

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

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