正则表达式匹配百分比与小数?

时间:2012-08-27 14:46:41

标签: regex decimal percentage .net

我正在尝试构建一个正则表达式(.NET)来匹配一个包含4个小数位的百分比。小数点后4位是必需的。范围看起来像:

0.0001 to 100.0000 

到目前为止,我已经提出:

(?:[^0]+[1-100]{1,3})\.(?:\d{4})

但是,我对如何在此表达式中添加一些其他要求有点不确定。我需要:

  • 小数点前没有前导零。允许42.4214,042.4214不允许。允许1.0000,但001.0000不允许。等。
  • 小数点前最多允许3个字符,不带前导零。
  • 如果小数点前的数字为100,则不允许小数点后的数字为0000以外的数字,因此允许100.0000,但不允许100.0135。 (这是否可以使用正则表达式?)

感谢帮助!

3 个答案:

答案 0 :(得分:6)

100.0000可能性视为单独的案例。它很容易匹配(100\.0000),并且很容易匹配其余部分([1-9]?\d\.\d{4}),所以你可以选择两个作为替代品:

^(100\.0000|[1-9]?\d\.\d{4})$

(假设您希望它是整个文本,否则请忽略^$

答案 1 :(得分:2)

我会做这样的事情:

^((([0-9]|[1-9]\d)\.\d{4})|100\.0000)$

Proof

答案 2 :(得分:1)

查看 in action

^(0|[1-9]\d?)\.\d{4}|100\.0000$

匹配

0.0001
100.0000
42.4214
1.0000

不匹配:

100.0135
042.4214
001.0000
000.0000
1000.0000
2000.0000
300.0000