正则表达式部分匹配几个不同的组

时间:2013-10-22 09:22:18

标签: javascript regex

我需要regexp来匹配来自多个组的字符串构建(A是任何字母,9是任何数字):

组1正则表达式[A-Z] {1,2} [0-9]?

A
A9
AA9

第2组正则表达式[A-Z] {1,3} [0-9]?

A
AA
AAA
AAA9

第3组正则表达式[A-Z] {2,3} [0-9]?[A-Z]?

AAA
AA9
AA9A

第4组正则表达式[0-9] {1,2} [A-Z] {1,2} [0-9]?

9A
9AA
9A9
99A9

不是每个组都必须在场,但必须按正确顺序排列 - 我的意思是(数字是组号):

1
12
123
1234

因此,如果存在第3组,那么我前面的所有组都必须出现。

因为有四个组(可以更多),所以替代如

^[A-Z]{1,2}[0-9]{1}|[A-Z]{1,2}[0-9]{1}\s{1}[A-Z]{1}[0-9]?$

不是最佳选择,因为它很复杂且难以维护。 是否有团体或其他什么解决方案? 小组的顺序很重要。

2 个答案:

答案 0 :(得分:1)

此正则表达式将匹配您提供的所有字符串:

^[A-Z]+[0-9]*(\s+[A-Z]+[0-9]*)+$

和无限的话。

答案 1 :(得分:0)

怎么样:

^[A-Z]{1,2}[0-9]?(?:\s+[A-Z]{1,3}[0-9]?(?:\s+[A-Z]{2,3}[0-9]?[A-Z]?(?:\s+[0-9]{1,2}[A-Z]{1,2}[0-9]?)?)?)?$