我试图排除
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 is valid?
您可以使用此正则表达式来验证以下所有数字
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,}|1\d{3,})(?:\.\d+)?$
查看在线演示
^
- 启动字符串锚点。(?:
- 第一个非捕获组:
[2-9]\d{2,}
- 匹配 2-9 范围内的数字,后跟 2+ 位数字。|
- 或者:1\d{3,}
- 1 后跟 3 个以上数字。)
- 关闭非捕获组。(?:
- 打开第二个非捕获组:
\.\d+
- 一个文字点,后跟 1 个以上数字。)?
- 关闭第二个非捕获组并将其设为可选。$
- 结束弦锚。/(?<!\d)
(\d{2}|1\d{2})\.\d+/g
\d{2}:2 位数字
(? 避免 205.111 中的 05.111 被匹配
我尝试了你的正则表达式,但它有问题,所以我想出了另一个解决方案。
感谢您的回答(一切正常)。
波西米亚人的说法也是正确的:
它以
结尾,但应该以\.*
或更准确地说\..*
结尾\.\d*
所以我将正则表达式编辑为以下内容,现在可以正常工作:
([0-9][0-9]\.\d*)|(1[0-9][0-9]\.\d*)
数字范围从 700 到 799 的正则表达式: (70[0-9]|7[1-9][0-9])
要排除 700 到 799 之间的一组数字:
模式 /^(?!(70[0-9]|7[1-9][0-9])$)/
查看这个工具 - 正则表达式数字范围生成器: https://3widgets.com/
本教程介绍数字范围:
https://www.regextutorial.org/regex-for-numbers-and-ranges.php