通常可以理解的数字格式的正则表达式

时间:2010-10-26 16:42:55

标签: regex

什么是可以匹配一般可理解数字的正则表达式? (越简单越好)

例如,它应匹配:

10
10.0
10.00
3.3333
123456
100,000
1,234,567
33,456.22
-2.2
.2
-.2
+.2
0.2
.20

不应该匹配:

33,33.1
1.2.3
100,000,000000

2 个答案:

答案 0 :(得分:1)

^[+-]?(?:\d+|\d{1,3}(?:,\d{3})+|(?:\d*|\d{1,3}(?:,\d{3})+)\.\d+)$

应该抓住大多数情况。

说明:

^                      # start of string
[+-]?                  # optional sign
(?:                    # match either...

 \d+                   # only digits
 |                     # or

 \d{1,3}(?:,\d{3})+    # only comma-separated digits
 |                     # or

 (?:                   # either...
  \d*                  # only digits (optional)
  |                    # or
  \d{1,3}(?:,\d{3})+   # comma-separated digits
 )                     # followed by...
 \.\d+                 # a dot and digits.

)                      # end of alternation
$                      # end of string.

答案 1 :(得分:1)

英文风格DD,DDD.DD

^[+-]?(([1-9]\d{0,2})(([,]\d{3})*|\d*)([.]\d+)?|0?([.]\d+)|0)$

适用于DD,DDD.DDDD.DDD,DD

^[+-]?(([1-9]\d{0,2})(([,]\d{3})*|\d*)([.]\d+)?|0?([.]\d+)|([1-9]\d{0,2})(([.]\d{3})*|\d*)([,]\d+)?|0?([,]\d+)|0)$

Here is how it works

希望我没有错过任何东西。如果您找到不起作用的示例,请说明。