正则表达式将代码与固定国家代码和可变通配符用法相匹配
Regex to match code with fixed country code and variable wildcard usage
我需要实现一个涵盖多个要求的正则表达式。这些是:
- 长度限制为 最多 8 个字符 应该完成(使用或
没有通配符)。在任何情况下,代码都不会超过 8 个字符。
- 当给出通配符时,也允许使用低于 8 位的数字。没有
通配符正好需要 8 位数字。
- 允许的字符是:0-9A-Za-z*(所有数字、所有字符、星号作为通配符)
- 纯通配符必须是可能的
- 否则前两位数字 必须包含 2 个字符 国家代码
(字母数字)然后 仅允许 数字或通配符。
- 国家码后任何地方都可以使用通配符(中间,末尾,多个asterix/wildcards也可以)
到目前为止我尝试了很多东西并且考虑了 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})
- 两个字母,然后是六位数字或零个或多个数字,后跟一个或多个星号序列和零个或多个数字
|
- 或
\*
- 一个星号
$
- 字符串结尾。
我需要实现一个涵盖多个要求的正则表达式。这些是:
- 长度限制为 最多 8 个字符 应该完成(使用或 没有通配符)。在任何情况下,代码都不会超过 8 个字符。
- 当给出通配符时,也允许使用低于 8 位的数字。没有 通配符正好需要 8 位数字。
- 允许的字符是:0-9A-Za-z*(所有数字、所有字符、星号作为通配符)
- 纯通配符必须是可能的
- 否则前两位数字 必须包含 2 个字符 国家代码 (字母数字)然后 仅允许 数字或通配符。
- 国家码后任何地方都可以使用通配符(中间,末尾,多个asterix/wildcards也可以)
到目前为止我尝试了很多东西并且考虑了 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})
- 两个字母,然后是六位数字或零个或多个数字,后跟一个或多个星号序列和零个或多个数字|
- 或\*
- 一个星号
$
- 字符串结尾。