【问题标题】:regex for strings that are Uppercase letters with numbers of minlength 6, and Uppercase letters with numbers of minlength 6 and hyphen and only number正则表达式的字符串是带有最小长度为 6 的数字的大写字母,以及带有最小长度为 6 的数字和连字符且只有数字的大写字母
【发布时间】:2021-11-08 01:47:59
【问题描述】:

目前我有这个正则表达式:

(?:\d+[A-Z]|[A-Z]+\d)[A-Z-\d]{6,}|[0-A9-Z]{6,}|[0-9]{6,}

我希望这个正则表达式匹配段落中的任何“字符串”:

带有数字且最小长度为 6 的大写字母

带有连字符且最小长度为 6 的数字的大写字母

只有最小长度为 6 的数字。

上面的这个正则表达式有效,但它仍然只匹配字母,我想如何排除这个?

A1A1A1A1A1A1A1A1 --> should match
12222222222222DE --> should match
'PRODUKT', 'PRODUKT', 'NICKNAME', 'PRODUKTNAME' --> shouldn't match any of this but its matching
123456 --> should match
6203-5458 --> shouldn't match
234SS-4NNNAA --> should match

【问题讨论】:

    标签: python regex re findall


    【解决方案1】:

    你可以使用

    (?<![\dA-Z-])(?=[\dA-Z-]{6,})(?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]*|[0-9]{6,}
    

    请参阅regex demo详情

    • (?&lt;![\dA-Z-]) - 紧靠左边,应该没有数字、大写字母或-
    • (?=[\dA-Z-]{6,}) - 紧靠右边,必须有 6 个或更多数字、大写字母或 -
    • (?:[\d-]+[A-Z]|[A-Z-]+\d)[A-Z\d-]* - 一个或多个数字或-,然后是一个大写字母或一个或多个大写字母或连字符,然后是一个数字,然后是零个或多个大写字母、数字或连字符
    • | - 或
    • [0-9]{6,} - 六位或更多位。

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多