我有这个 javascript 正则表达式(带一个点的小数点后 3 位)
^\d+(\.\d{1,3})?$
我也想匹配一个""
我认为是的空字符串
^$
我怎样才能将这些组合成 1 个正则表达式
这些应该是通过测试
"" //empty string
1
1.
1.0
1.00
1.000
123456789
0
.0
.00
.000
我希望我已经涵盖了所有这些。
我有这个 javascript 正则表达式(带一个点的小数点后 3 位)
^\d+(\.\d{1,3})?$
我也想匹配一个""
我认为是的空字符串
^$
我怎样才能将这些组合成 1 个正则表达式
这些应该是通过测试
"" //empty string
1
1.
1.0
1.00
1.000
123456789
0
.0
.00
.000
我希望我已经涵盖了所有这些。
不包括空格,您当前的表达式似乎没有通过您的要求。
^\d*\.?\d{0,3}$
可选的前导数字,可选的点,结束前最多三位数字。
编辑:@Guffa 注意到我原来的解决方案也可以简单地匹配一个点,“。”
^\d*((\d\.)|(\.\d))?\d{0,3}$
此版本将\.?
检查替换为对数字后跟点的检查,或点后跟数字的检查,或两者都不检查。
用三种不同的情况做一个表达式:
这将通过您的所有测试,并且字符串"."
也不会通过:
^(\d*|\d+\.\d{0,3}|\d*\.\d{1,3})$
演示:http: //jsfiddle.net/Guffa/9pnwk/
数字周期案例是一个困难的案例,我原来的答案错过了。这个答案比其他答案更简单,涵盖所有情况,并且没有任何错误匹配。
表达
^((\d+\.?|\.(?=\d))?\d{0,3})$
我宁愿去 ==="" 或你的正则表达式比较,只是为了性能