【问题标题】:Regex only match with set of numbers正则表达式只匹配一组数字
【发布时间】:2018-03-22 11:07:21
【问题描述】:

我有一组数字,这里有 ID 号。中心数字-01- 必须与01,21,22,23,24,02 匹配。目前,它只接受 2 位数的任何值。它只需要接受这组数字01,21,22,23,24,02。有什么想法吗?

[0-9]{2}(([0-0]{1}[1-9]{1})|([1-1]{1}[0-2]{1}))(([0-0]{1}[1-9]{1})|([1-2]{1}[0-9]{1})|[3-3]{1}[0-1]{1})-[01|21|23|24|01]{2}-[0-9]{4}

身份证格式

880101-01-5332

这是我的示例正则表达式的链接:https://regex101.com/r/GYJ6by/2

【问题讨论】:

  • 你试试^[0-9]{6}-(01|21|22|23|24|02)-[0-9]{4}$
  • [01|21|23|24|01] 是一个字符类,它“匹配列表中的单个字符01|234,所以01|234,两个字符长,如 RegEx101 本身所解释的。您还遗漏了两个数字并重复了一个。所以你想要的是(?:01|02|21|22|23|24),没有{2}
  • @Xufox 感谢您的解释。它现在正在工作

标签: regex regex-group


【解决方案1】:

对这些有限的选项使用括号。 [] 用于字符集,但对于特定选项,您可以使用(foo|bar|baz)

[0-9]{2}(([0-0]{1}[1-9]{1})|([1-1]{1}[0-2]{1}))(([0-0]{1}[1-9]{1})|([1-2]{1}[0-9]{1})|[3-3]{1}[0-1]{1})-(01|21|23|24|01)-[0-9]{4}

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多