gpt4 book ai didi

java - 正则表达式没有前导点和最大一个前导零

转载 作者:太空狗 更新时间:2023-10-29 16:10:53 25 4
gpt4 key购买 nike

如何编写匹配具有以下属性的字符串的正则表达式?:

  1. 包含数字以及作为小数分隔符的唯一点(但点不是必需的,这意味着它可以是 123123.4123.56).
  2. 没有前导点(不是 .12)。
  3. 前导零只能在后面跟一个点时写入(不能像000.12,只能是0.12)。
  4. 只有 2 位小数。

最佳答案

在小数点左边你想要一个不以零开头的数字(1 位或更多位):

[1-9][0-9]*

或者它可以只是一个零:

0|[1-9][0-9]*

数值可以有小数点和小数点后1-2位:

\.[0-9]{1,2}

左侧为必填项。小数点和小数位是可选的:

(?:0|[1-9][0-9]*)(?:\.[0-9]{1,2})?

需要第一个非捕获组来限制 | 模式的范围。需要第二个非捕获组来使组合的“小数点和小数位”模式可选。

请注意,这将允许尾随零,例如100.00


根据喜好,[0-9]也可以写成\d。我通常使用 \d,但由于正则表达式也有 [1-9],所以我更喜欢这里的 [0-9]我觉得这有助于澄清差异。

根据正则表达式的使用方式,您可能需要添加 ^ begin/$ end anchor 。在使用 find() 时需要它们,在使用 matches() 时不需要它们,但不会造成伤害:

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

关于java - 正则表达式没有前导点和最大一个前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51196783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com