如何从 REGEX 中的字符串中排除 2 个字母字符
How to exclude 2 alphabetic character from a string in REGEX
我正在尝试查找此特定产品代码的正则表达式。
描述:
- 有效的产品代码必须以两位数字之一开头。
- 号码不能以0开头
- 数字后面必须跟一个连字符 -
- 连字符后跟一系列大写字母
字母符合模式 AAA 和 BBB
- AAA:除"I"和"O"之外的任意三个大写字母字符的字符串
- 范围内任意三个大写字母字符的 BBB 字符串
"A" 到 "D"
示例:
N-AAA
NN-AAA
NN-BBB
NN-AAABBB
我的问题是我提到的第 5) 点。到目前为止我的解决方案是:
^[1-9]?[0-9]-[A-Z][^IO]{3}?[A-D]{3}$
我不确定我在 RE 中突出显示的部分。我想知道我的解决方案是否正确,如果不正确,我想知道答案及其背后的原因。
谢谢,
您必须在正则表达式中使用 Negative Lookahead (?!([I]|[O]))
。请检查:
^[1-9]{1}[0-9]+\-(?!([I]|[O]))[A-Z]{3}[A-D]{3}
旧更新:
^[1-9]{1}[0-9]+\-((?!([I]|[O]))[A-Z]{3}[A-D]{3}|(?!([I]|[O]))[A-Z]{3}|[A-D]{3})
更新的正则表达式:
^[1-9]{1}(|[0-9])\-([A-HJ-NP-Z]{3}[A-D]{3}|[A-HJ-NP-Z]{3}|[A-D]{3})
^[1-9]{1}
从 1 到 9 开始
(|[0-9])
N 或 NN
\-
连字符 (-)
[A-HJ-NP-Z]
避免 I
和 O
([A-HJ-NP-Z]{3}[A-D]{3}|[A-HJ-NP-Z]{3}|[A-D]{3})
AAABBB 或 AAA 或 BBB
您可以在Regex101中查看。
查看我在 Regex 中的最后更新。
您可以使用类似的东西:
^[1-9]\d?-(?:[A-HJ-NP-Z]{3}(?:[A-D]{3})?|(?:[A-D]{3}))$
我正在尝试查找此特定产品代码的正则表达式。
描述:
- 有效的产品代码必须以两位数字之一开头。
- 号码不能以0开头
- 数字后面必须跟一个连字符 -
- 连字符后跟一系列大写字母 字母符合模式 AAA 和 BBB
- AAA:除"I"和"O"之外的任意三个大写字母字符的字符串
- 范围内任意三个大写字母字符的 BBB 字符串 "A" 到 "D"
示例:
N-AAA
NN-AAA
NN-BBB
NN-AAABBB
我的问题是我提到的第 5) 点。到目前为止我的解决方案是:
^[1-9]?[0-9]-[A-Z][^IO]{3}?[A-D]{3}$
我不确定我在 RE 中突出显示的部分。我想知道我的解决方案是否正确,如果不正确,我想知道答案及其背后的原因。
谢谢,
您必须在正则表达式中使用 Negative Lookahead (?!([I]|[O]))
。请检查:
^[1-9]{1}[0-9]+\-(?!([I]|[O]))[A-Z]{3}[A-D]{3}
旧更新:
^[1-9]{1}[0-9]+\-((?!([I]|[O]))[A-Z]{3}[A-D]{3}|(?!([I]|[O]))[A-Z]{3}|[A-D]{3})
更新的正则表达式:
^[1-9]{1}(|[0-9])\-([A-HJ-NP-Z]{3}[A-D]{3}|[A-HJ-NP-Z]{3}|[A-D]{3})
^[1-9]{1}
从 1 到 9 开始
(|[0-9])
N 或 NN
\-
连字符 (-)
[A-HJ-NP-Z]
避免 I
和 O
([A-HJ-NP-Z]{3}[A-D]{3}|[A-HJ-NP-Z]{3}|[A-D]{3})
AAABBB 或 AAA 或 BBB
您可以在Regex101中查看。
查看我在 Regex 中的最后更新。
您可以使用类似的东西:
^[1-9]\d?-(?:[A-HJ-NP-Z]{3}(?:[A-D]{3})?|(?:[A-D]{3}))$