正则表达式排除一系列数字

我试图排除下面的所有十进制数字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]?:匹配01有或全无
  • [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+ 位数字。
    • )? - 关闭第二个非捕获组并使其可选。
  • $ - 结束字符串锚。

以上是正则表达式排除一系列数字的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>