正则表达式排除一系列数字
我试图排除下面的所有十进制数字200。例如:
50.123 invalid
150.103 invalid
205.111 valid
使用([0-9][0-9])|(1[0-9][0-9]).*reg 表达式,我得到以下结果:
50.123 valid but should be invalid
150.103 invalid
205.111 valid
谁能告诉我为什么任何小于 100 的十进制数都是有效的?
回答
您可以使用此正则表达式来验证以下所有数字200:
^[01]?[0-9]{1,2}(?:.[0-9]+)?$
正则表达式演示
正则表达式详情:
^: 开始[01]?:匹配0或1有或全无[0-9]{1,2}: 匹配 1 或 2 位数字(?:.[0-9]+)?: 可选匹配.后跟 1+ 位数字$: 结尾
回答
考虑到您想要排除200 以下的数字以及显示无效示例的示例数据这一事实,我认为您需要:
^(?:[2-9]d{2,}|1d{3,})(?:.d+)?$
看在线演示
^- 开始字符串锚。(?:- 第一个非捕获组:[2-9]d{2,}- 匹配号码范围为 2-9,后跟 2 个以上的数字。|- 或者:1d{3,}- 1 后跟 3 个以上的数字。)- 关闭非捕获组。
(?:- 打开第二个非捕获组:.d+- 文字点后跟 1+ 位数字。)?- 关闭第二个非捕获组并使其可选。
$- 结束字符串锚。