使用正则表达式小于91的十进制和整数

我有这个正则表达式
/^(0|[1-9]d*)(.d+)?$/

它允许所有十进制和整数。

我需要它来添加小于 91 的所有数字。

我怎么能实现呢?

请帮忙

回答

可以像这样实现小于91 的整数或小数:

^(?:0|[1-8]d?|90?)(?:.d+)?$

查看在线演示。

  • ^ - 起点线锚。
  • (?: - 打开第一个非捕获组:
    • 0|[1-8]d?|90?- 将零1-8 与可选数字九与可选零匹配。
    • ) - 关闭第一个非捕获组。
  • (?: - 打开第二个非捕获组:
    • .d+ - 文字点和 1+ 位数字。
    • )? - 关闭第二个非捕获组并将其设为可选。
  • $ - 结束线锚。

编辑:如果您不介意按照“00”或“00.0000”匹配双零,您可以使用:

^(?:d0?|[1-8]d?)(?:.d+)?$

或者,甚至更简洁,使用负前瞻:

^(?!9[1-9])dd?(?:.d+)?$


回答

使用您显示的样本,请尝试以下操作。

^(?:[0-9]|[0-8][0-9]|90)(?:.d+)?$

上述正则表达式的在线演示

OR也可以缩短如下:

^(?:[0-8]?[0-9]|90)(?:.d+)?$

说明:为以上添加详细说明。

^(?:                   ##Matching from starting of value and starting a non-capturing group here.
 [0-9]|[0-8][0-9]|90   ##Matching either 0 to 9 OR till 89 OR 9 here.
)                      ##Closing non-capturing group here.
(?:.d+)?$            ##In a non-capturing group matching dot followed by 1 or more digits keep it optional at the last of value.


奖励解决方案:仅基于我的假设,如果您想匹配其他零但仍小于 91,请尝试以下操作。

^(?:0+)?(?:[0-9]|[0-8][0-9]|90)(?:.d+)?$


以上是使用正则表达式小于91的十进制和整数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>