2016-09-20 59 views
2

我是新的正则表达式,我想验证至少有6个字符和最多30个单词,并且应该只以字母开头,但它可以包含从第二个位置开始的数字和下划线。我使用这种模式,但它失败了在测试中。正则表达式的模式

String pattern = "^[A-Za-z][A-Za-z0-9_]*{6,30}$"; 
+2

尝试在你的第二个字符类后去掉'*'。你有两个量词,它不是一个有效的正则表达式。 –

回答

6

你可以使用这个表达式:

String pattern = "^[A-Za-z][A-Za-z0-9_]{5,29}$"; 
  • 范围量词{5,29}之前,您不能使用*
  • 使用{5,29},因为1个字符已经在开始。

您还可以使用缩短的正则表达式:

String pattern = "^[A-Za-z]\\w{5,29}$"; 

由于\w(字字符),相当于[A-Za-z0-9_]

+1

我没有想过,谢谢 –

+2

另外,如果使用'matches()',锚''''和'$'是多余/不必要的。 – Andreas