正则表达式匹配2位数,可选的十进制,两位数

Eri*_*rix 36 regex

我花了半个小时试图得到这个,也许有人可以快速拿出来.

我需要一个匹配一个或两个数字的正则表达式,后跟一个可选的decmial点,后跟一个或两个数字.

例如,它应该完整匹配这些字符串:

3
33
.3
.33
33.3
33.33

并且不匹配在decmial点之前或之后超过2位数的任何内容.

Lee*_*Lee 59

编辑:更改为适合其他反馈.

我理解你的意思是,如果没有小数点,那么不应该有两个以上的数字.所以这应该是:

\d{0,2}(\.\d{1,2})?
Run Code Online (Sandbox Code Playgroud)

在大多数实现中,这应该成功.如果没有,您可以使用:

[0-9]?[0-9]?(\.[0-9][0-9]?)?
Run Code Online (Sandbox Code Playgroud)

这应该适用于我见过的每一个实现.

  • 哪个没有.33.尝试将第一个更改为\ d {0,2}. (2认同)

Jer*_*ein 7

(?<![\d.])(\d{1,2}|\d{0,2}\.\d{1,2})?(?![\d.])
Run Code Online (Sandbox Code Playgroud)

火柴:

  • 你的例子
  • 33.

不匹配:

  • 333.33
  • 33.333


Dan*_*uis 6

为了建立 Lee 的答案,您需要锚定表达式以满足小数点前不超过 2 个数字的要求。

如果每个数字都是一个单独的字符串,则可以使用字符串锚点

^\d{0,2}(\.\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)

如果每个数字都在一个字符串中,则可以使用单词 anchors

\b\d{0,2}(\.\d{1,2})?\b
Run Code Online (Sandbox Code Playgroud)


aha*_*ker 5

您提到您希望正则表达式匹配每个字符串,但您之前提到过小数点前有 1-2 位数字?

这将匹配 1-2 位数字,后跟一个可能的小数,后跟另外 1-2 位数字,但在 0.33 的示例中失败

\d{1,2}\.?\d{1,2}
Run Code Online (Sandbox Code Playgroud)

这将匹配 0-2 位数字,后跟可能的 deciaml,后跟另外 1-2 位数字,并匹配 0.33 的示例

\d{0,2}\.?\d{1,2}
Run Code Online (Sandbox Code Playgroud)

不确定您到底要找哪一个。