正则表达式将代码与固定国家代码和可变通配符用法相匹配

Regex to match code with fixed country code and variable wildcard usage

我需要实现一个涵盖多个要求的正则表达式。这些是:

到目前为止我尝试了很多东西并且考虑了 Lookahead/Lookbehind 因为 asterix 和 max。长度。 我的最新状态涵盖了大部分要求如下:

^([A-Za-z]{2}[0-9*]{0,6}|\*)$

勾选 live demo with right/wrong combo

但是在这个例子中,没有 asterix/wildcard 的代码可能少于 8 个字符 -> 那是错误的。

非常感谢您的提前帮助:)

您可以使用

^(?!.*\*\*$)(?!.{9})(?:[A-Za-z]{2}(?:\d*(?:\*\d*)+|\d{6})|\*)$

参见regex demo

详情:

  • ^ - 字符串开头
  • (?!.*\*\*$) - 字符串末尾不允许有两个 **
  • (?!.{9}) - 除了换行字符
  • 之外,字符串必须包含少于 9 个字符
  • (?:[A-Za-z]{2}(?:\d*(?:\*\d*)+|\d{6})|\*) - 两种选择之一:
    • [A-Za-z]{2}(?:\d*(?:\*\d*)+|\d{6}) - 两个字母,然后是六位数字或零个或多个数字,后跟一个或多个星号序列和零个或多个数字
    • | - 或
    • \* - 一个星号
  • $ - 字符串结尾。