复杂的正则表达式,用于匹配短于n个字符的字符串

时间:2014-08-04 17:28:16

标签: java regex

我有以下Java正则表达式:

^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$

我想扩展上面的正则表达式,只匹配长度在1到32个字符之间的字符串。

我尝试使用群组和{n,m}运算符,但这不起作用,因为我有*运算符两次。我的感觉是,使用零宽度负向前瞻可能有一个解决方案吗?

1 个答案:

答案 0 :(得分:2)

使用积极的前瞻:

^(?=.{1,32}$)[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$

这与你的正则表达式相同,但确保整个字符串的长度在1到32个字符之间。