1

我正在尝试构建一个正则表达式(.NET)来匹配一个小数点后 4 位的百分比。需要 4 位小数。范围如下所示:

0.0001 to 100.0000 

到目前为止,我想出了:

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

但是,我有点不确定如何向这个表达式添加一些其他要求。我需要:

  • 小数点前没有前导零。允许使用 42.4214,不允许使用 042.4214。1.0000 是允许的,但 001.0000 是不允许的。ETC..
  • 十进制前最多允许 3 个字符,不带前导零。
  • 如果小数点前的数字是 100,那么小数点后的数字不允许是 0000 以外的任何数字,所以允许 100.0000,但不允许 100.0135。(这甚至可以使用正则表达式吗?)

帮助表示赞赏!

4

3 回答 3

6

只需将这种100.0000可能性视为一个单独的案例。很容易匹配(100\.0000),很容易匹配其余的([1-9]?\d\.\d{4}),因此将两者作为替代项,您将得到:

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

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

于 2012-08-27T14:57:34.190 回答
2

我会做这样的事情:

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

证明

于 2012-08-27T14:50:37.120 回答
1

看看它在行动

^(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
于 2012-08-27T15:05:40.093 回答