使用正则表达式排除某些数字的数字范围

10

请问有人能帮我写一个正则表达式,从一系列数字中排除其中的某些数字?

目前已经配置了正则表达式^([1-9][0][0-9])$。现在,如果我想要从中排除某些/一个数字(如501504),那么该怎样修改正则表达式呢?

1个回答

29

更详细的描述请参考此回答,您可以使用以下带有“负向先行断言”命令?!的正则表达式:

^((?!501|504)[0-9]*)$

您可以在这里查看正在执行和解释的正则表达式:https://regex101.com/r/mL0eG4/1

  • /^((?!501|504)[0-9]*)$/mg
    • ^ 断言行首位置
    • 第一捕获组 ((?!501|504)[0-9]*)
      • (?!501|504) 负向先行断言 - 断言接下来不会匹配以下正则表达式:
        • 第一种可能性:501
          • 501 字符串中的 501 文字
        • 第二种可能性:504
          • 504 字符串中的 504 文字
      • [0-9]* 匹配列表中的任意一个单字符
        • 量词:* 重复零次或更多次,尽可能多地匹配 [贪婪匹配]
        • 0-9 数字 0 到 9 中的任意一个单字符
    • $ 断言行尾位置
    • m 修饰符:m 多行。导致 ^ 和 $ 匹配每行的开头/结尾(而不仅仅是字符串的开头/结尾)
    • g 修饰符:g 全局。所有匹配项(不仅仅是第一个匹配)

  • 网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接