正则表达式:匹配多个允许的长度?

时间:2016-07-27 11:46:17

标签: regex

所以我想允许长度为8或12的A-Z。

我试过了:

^[a-z]{8|12}$

但这不起作用。什么是正确的解决方案? (不重复)

4 个答案:

答案 0 :(得分:7)

你需要使用这样的交替:

^([a-z]{8}|[a-z]{12})$

没有其他正则表达式解决方案不涉及重复[a-z]部分。如果您使用分组构造,至少不必重复^$锚点。

或者,您可以使用可选组,但只有在模式为静态时才有效。实际上,差异是疏忽的(在regexhero测试):

enter image description here

答案 1 :(得分:1)

作为"正好8或正好12"的替代品。模式的类型,这里是" 8,可能还有4个"类型模式:

^[a-z]{8}([a-z]{4})?$

答案 2 :(得分:1)

我建议此解决方案:

^([a-z]{4}){2,3}$

这意味着长度为4的组[a-z]必须匹配2(总长度:8)或3(总长度:12)倍。这样,允许的字符集只需定义一次。

答案 3 :(得分:0)

试试这个

^[a-z]{8}$|^[a-z]{12}$

多重长度字段选项不在那里,您必须单独提供它们,包括正则表达式