十进制正则表达式空字符串

时间:2013-10-29 23:25:08

标签: javascript regex decimal

我有这个javascript正则表达式(小数点后3位

^\d+(\.\d{1,3})?$

我想也匹配一个我认为是

的空字符串""
^$

如何将这些组合成1个正则表达式

这些应该是通过测试

"" //empty string
1
1.
1.0
1.00
1.000
123456789
0
.0
.00
.000

我希望我已经覆盖了所有这些。

4 个答案:

答案 0 :(得分:3)

不包括空格,您当前的表达似乎没有超出您的要求。

^\d*\.?\d{0,3}$

可选的前导数字,可选点,结尾前最多三位数。

编辑: @Guffa注意到我的原始解决方案也只是匹配一个点,“。”

^\d*((\d\.)|(\.\d))?\d{0,3}$

此版本替换\.?支票,检查数字后跟点,或点后跟数字,或两者都没有。

答案 1 :(得分:2)

用三种不同的情况表达:

  • 零个或多个数字
  • 一个或多个数字,句点,零到三位数
  • 零个或多个数字,句点,一到三个数字

这将通过所有测试,字符串"."也不会通过:

^(\d*|\d+\.\d{0,3}|\d*\.\d{1,3})$

演示:http://jsfiddle.net/Guffa/9pnwk/

答案 2 :(得分:1)

数字期间案例很难,我的原始答案错过了。这个答案比其他答案简单,涵盖所有案例,并且没有任何错误的匹配。

  • 字符串的开头
  • 匹配任何一个
    • 数字1次以上,然后是可选的“。”
    • “”。只要前面有一个数字
  • 数字0-3次
  • 字符串结尾

<强>表达式

^((\d+\.?|\.(?=\d))?\d{0,3})$

REY

答案 3 :(得分:1)

我宁愿选择===“”或你的正则表达式比较,只是出于表现的目的