regex 带2位小数的百分比正则表达式

rkttyhzu  于 2022-12-24  发布在  其他
关注(0)|答案(3)|浏览(154)

我期待建立2正则表达式与这些约束:

  • 0至100
  • 2位小数(如15.25或0.01)
  • 但是100.01是不可接受的
  • 无负数

对于第二个正则表达式,我需要它上升到200而不是100,但其余的相同。
目前,我有一个0到100:

^([0-9]|[1-9][0-9]|100)?$

这个是200块

^([01]?[0-9][0-9]?|200)?$

我可以得到0到100或200个数字,但没有小数位。

avwztpqn

avwztpqn1#

第一个正则表达式:第一个月

regex101.com

第二个正则表达式^(([01]?[0-9][0-9]?)|([01]?[0-9][0-9]?\.[0-9]{2})|200)?$

它还包含11.44199.11等值
regex101.com

3gtaxfhh

3gtaxfhh2#

你可以像这样扩展你的正则表达式:

^([0-9]|[1-9][0-9]|(?:[0-9]|[1-9][0-9])\.(?:[0-9]|[0-9][0-9])|100)?$

您可以在这里尝试:https://regex101.com/r/HBidWk/1
这是针对0-100

b4wnujal

b4wnujal3#

下面是我从理解OP的需求中得出的正则表达式模式,如下所示...

  • 至于第一个
    • "...从0.00(但不是00.00)到99.99再到100(但不是100.00)"*
  • 模式应该是...
/^(?:[1-9]?\d\.\d{2}|100)$/
  • ......解释可以在该模式的测试端找到:

/^(?:[1-9]?\d\.\d{2}|100)$/.

  • 至于第二个
    • "...从0.00(但不是00.00)到199.99再到200(但不是200.00)"*
  • 模式应该是...
/^(?:(?:1\d{2}|[1-9]?\d)\.\d{2}|200)$/
  • ......解释可以在该模式的测试端找到:

/^(?:(?:1\d{2}|[1-9]?\d)\.\d{2}|200)$/.

  • 由于我第一次的误读,我还实现了一个复杂得多的
    • "...从100(但不是100.00)到199.99再到200(但不是200.00)"*
  • 这里的模式是...
/^(?:1\d{2}(?:(?<!100)\.\d{2}|\.\d[1-9])|100|200)$/
  • ......解释可以在该模式的测试端找到:

/^(?:1\d{2}(?:(?<!100)\.\d{2}|\.\d[1-9])|100|200)$/.

相关问题