RegEx验证:abc123(30x2)和那里的变化



我正在使用它来开发一个正则表达式,以验证匹配以下内容的模式:

abc123
Ab3TF56G
BD356-2
abc123(3x4)
Ab3TF56G(24x37)
BD356-2(105x04)
abc123 (3x4)
Ab3TF56G (24x37)
BD356-2 (105x04)
abc123(3x4x10)
Ab3TF56G(24x37x3)
BD356-2(105x04x14)
abc123 (3x4x10)
Ab3TF56G (24x37x3)
BD356-2 (105x04x14)

我承认我在RegEx方面很糟糕,但我遵循:www.regexr.com的指南,并且到目前为止已经想出了这个:([A-Za-z0-9])((d[x^)]d+))+

不幸的是,当我开始尝试解释可能的破折号和旁括弧时,它停止工作。

•字母数字集合可以是任意长度

•该序列可以,但不需要在破折号后面加一个整数

•也可以后跟一个开放的&用"x"字符分隔的整数的右括号(基本上是尺寸)

任何帮助都将非常感激。

编辑此外,下列语句应该失败:

abc123 (3x4x10)shs
sdlk234(3x)
sdlk234(3x0)
sdlk234-2 (3x)333
Ab3T F56G

试试这个:

([a-zA-Z0-9-]+)s?(([dx]+))?

看到它在这里工作:https://regex101.com/r/pU9oR4/1

图示:https://www.debuggex.com/r/uVGo8mrIUYhXHxjP

编辑

在你的should 't匹配示例之后,它变得有点困难,所以你的新模式应该是:

^([a-zA-Z0-9-]+b)([sd-])?(((?:(?!0)[d]+)((x(?:(?!0b)[d]+))(x(?:(?!0b)[d]+))?)))?$

再次编辑查看它的工作情况:https://www.debuggex.com/r/dxPPbPw0mUKQPRWg

我还添加了验证,所以它不匹配:

sdlk234(3x0x0)
sdlk234(3x1x0)
sdlk234(0x1x1)

遵循您的维度逻辑

101 Regexp Demo

^[w-]+s*(((?!0b)d+(x(?!0b)d+)+))?$

(?!0b): Negative Lookahead,确保之后不能是0b

b:断言位置在一个单词边界(^ w w $ | | w w | w w)

最新更新