需要在数字中显示的位数是预定义的,我需要一个正则表达式/函数来验证输入数字。
示例:如果length是(0,2)那么应该允许的数字如下:
0.0 --true,
0 -- true,
000.0000 - true,
0.2 --true,
0.200 --true,
1.2 -- false,
0.22 -- true,
0.02 -- true,
.2 -- true,
.99 -- true
如果长度是(2,2)那么应该允许的数字如下:
0.0 --true,
0 -- true,
000.0000 - true,
0.2 --true,
0.200 --true,
1.2 -- true,
0.22 -- true,
0.02 -- true,
.2 -- true,
.99 -- true,
12.21 -- true,
0099.3200-- true,
80.080 --true,
80.80 --true,
8.088 --false,
09.9 --true,
9.0 --true,
5 --true,
89 --true
等等。任何想法/建议/代码/帮助将不胜感激。
感谢。
答案 0 :(得分:0)
一种可能方法的大致概述:
答案 1 :(得分:0)
我通常会避免RegExp这样的事情,但是a
和b
来自(a, b)
的情况下,以下模式可能有用:
/^0*[0-9]{0,a}(?:\.[0-9]{0,b}0*)?$/
细分:
^ - beginning of string
0* - zero or more zeros
[0-9]{0,a} - 0 to a digits*
(?: - start of a non-capturing container
\. - a period character
[0-9]{0,b} - 0 to b digits*
0* - zero or more zeros
)? - 0 or 1 of the non-capturing containers
$ - end of the string
*(\d
可用于代替[0-9]
,但我希望将这些字母保留为变量)
如果你想要动态数字,你需要从一个字符串构建你的RegEx,但如果它们是静态的,那么你可以对它进行硬编码:
(2,2)
/^0*[0-9]{0,2}(?:\.[0-9]{0,2}0*)?$/