Regex以排除一系列数字

Regex以排除一系列数字,regex,Regex,我试图排除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的十进制数都是有效的吗? /(?<!\d) (\d{2}|1\d{2})\.\d+/g \d{2}

我试图排除
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的十进制数都是有效的吗?
/(?<!\d)
(\d{2}|1\d{2})\.\d+/g
\d{2}:2位数字

(?避免205.111中的05.111匹配


我尝试了你的正则表达式,但它有问题,所以我想出了另一个解决方案。

你可以使用这个正则表达式来验证你下面的所有数字
200

^[01]?[0-9]{1,2}(?:\[0-9]+)$

正则表达式详细信息:

  • ^
    :开始
  • [01]?
    :匹配
    0
    1
    或不匹配
  • [0-9]{1,2}
    :匹配1或2位数字
  • (?:\.[0-9]+)?
    :可选地匹配
    ,后跟1+位
  • $
    :结束
    • 谢谢您的回答(所有答案都正确无误)

      波希米亚人也正确地说:

      它以
      \.*
      结尾,但应该以
      \..*
      或更准确地说是
      \.\d*

      因此,我将正则表达式编辑为以下内容,现在可以正常工作:


      ([0-9][0-9]\.\d*)(1[0-9][0-9]\.\d*)

      考虑到您希望排除200以下的数字和显示无效示例的示例数据,我认为您需要:

      ^(?:[2-9]\d{2,}|1\d{3,})(?:\.\d+)?$
      
      在线查看

      • ^
        -启动字符串锚定
      • (?:
        -第一个非捕获组:
        • [2-9]\d{2,}
          -匹配编号范围为2-9,后跟2+位
        • |
          -或:
        • 1\d{3,}
          -一个1,后跟3+位
        • -关闭非捕获组
      • (?:
        -打开第二个非捕获组:
        • \。\d+
          -一个文字点,后跟1+位
        • )?
          -关闭第二个非捕获组并将其设置为可选
      • $
        -结束字符串锚定

      您可以使用:
      ^[01]?[0-9]{1,2}(?:\[0-9]+)?$
      你的正则表达式有一个错误:它以
      \.*
      结尾,但应该以
      \..*
      或者更准确地说是
      \.\d*
      结尾。你的正则表达式需要输入任意数量的点,而不是一个点,然后是任意数量的字符/数字。@anubhava是的,你的正则表达式对我来说工作得很好,谢谢你的帮助,人们投票赞成删除它。@Should重复项是否被删除?通常情况下,否:大多数重复项都会保留。将同一问题的多个不同措辞的副本作为搜索素材是很有用的,因为寻找答案的人可能也会使用不同的措辞。这是否回答了您的问题?205.111中的05.111是否与此正则表达式匹配?@longuyễ使用此regex-05.111的nánh无效,205.111有效,这是正确的,但它也将使
      00.
      100.
      有效