我有这个正则表达式/^(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+)?$
以上regex 的在线演示
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+)?$
这个怎么样?
^(90|[0-8][0-9])$
只需将90
或00
匹配到89
即可。