我正在尝试查找此特定产品代码的REGEX。如何从REGEX中的字符串中排除2个字母字符
描述:
- 一个有效的产品代码必须通过的两位数字一个一个开始。
- 数不能与0
- 开始数必须跟着一个连字号 -
- 连字符后面跟着大写的序列 字母符合图案AAA BBB和
- AAA:的除了“I”和“O”的任意三个大写字母字符串 的范围 “A”的任意三个大写字母字符
- BBB字符串为“d”
实例:
N-二AAA
NN-AAA
NN-BBB
NN-AAABBB
我的问题是与点5)予提及。我的解决方案迄今:
^[1-9] [0-9] - [AZ] [^ IO] {3} [AD] {3} $
我不?确定我在RE中突出显示的部分。我期待知道我的解决方案是否正确,如果不正确,我想知道答案和背后的推理。
感谢,
这是不正确的,因为'[^ IO]'匹配任何* *字符,但'I'和'O'。另外,为什么你添加了“{#}”?如果你在数字后面加一个连字符,为什么要用'.'?那么'AAA'和'BBB'每个都是3个字母的序列呢?那么,你的要求并不明确。试试['^ [1-9] [0-9]? - (?:(?![IO])[AZ]){3}(?:[AD] {3})?$' //regex101.com/r/lhJAgI/1)。 –
你使用flex吗? (或者,为什么要标记这个问题[编译器构造]?)另外,你的例子似乎表明这个数字可以跟随AAA或者BBB或者两者。但这不是你的描述所说的。 – rici
您使用哪种编程语言? –