使用正则表达式小于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+)?$