2010-11-04 24 views
2

要验证我的字符串,我需要字符串只包含小写或大写或两种情况从A(a)到Z(z)的混合字符,以及字符串长度应该在6到12个字符的范围内。这种约束的正则表达式是什么?正则表达式,只包含小写字母或大写字符或两者,用于用户名验证

+3

我发现这个网站对于学习/理解正则表达式非常有帮助:http://www.regular-expressions.info – Owen 2010-11-04 14:28:59

+1

@Owen - 为优秀资源+1。 – dotariel 2010-11-04 14:31:23

回答

4

这应该工作:

[A-Za-z]{6,12} 

但是,将你的标准实例匹配输入字符串中,这样你可以添加^$锚,以确保您的整个输入字符串符合您的标准。

^[A-Za-z]{6,12}$ 
+2

你应该加锚'^ [A-Za-z] {6,12} $' – Toto 2010-11-04 14:28:36

+0

@ M42。我记得在上班的路上。谢谢。 – jordanbtucker 2010-11-04 15:08:04

+0

@ M42如果测试是String.match()(或Matcher.match()),则不需要锚点。 – 2010-11-04 15:10:25

1

试试这个:

[a-zA-Z]{6,12} 
+1

你应该加锚'^ [A-Za-z] {6,12} $' – Toto 2010-11-04 14:29:24

6

您可以使用正则表达式:

^[\p{Lu}\p{Ll}\p{Lt}]{6,12}$ 

,如果你不想惩罚人对被命名弗朗索瓦,玛丽亚,或小题大做。

当然,Java中字符串的长度并不十分清晰,特别是在这里,因为PatternMatcher类只处理代码点(逻辑Unicode字符)的长度,而不处理字符串长度Java的内置但非常 oxymoronically命名为char单位(物理16位的UTF-16)。

这意味着,从正则表达式引擎的角度来看,带有代理的字符串看起来与其他Java类的长度不同。

正则表达式引擎正确,顺便说一句。

+1

很好的答案(+1)。除了ascii外,还有很多! – 2010-11-04 15:11:44

相关问题