2012-10-17 215 views
4

我想匹配包含至少一个字母和一个数字的字母数字字符串。有没有简单的方法将以下内容合并到单个正则表达式中?正则表达式匹配只包含字母和数字的字母数字

strValue.matches("[A-Z0-9]+") 
    && strValue.matches(".*[A-Z].*") 
    && strValue.matches(".*[0-9].*") 
+1

@ m.buettner:其实这是错误的。 'String.matches(String)'使用匹配整个字符串的Matcher.matches()。你描述的行为是在'Matcher.find()'中实现的。 –

+0

噢好吧,我的坏。 –

回答

6

使用前瞻断言。

strValue.matches("^(?=.*[A-Z])(?=.*\\d)[A-Z\\d]+$") 
+0

你为什么要使用行首? – lilalinux

+2

为了确保在匹配开始之前没有非字母数字字符(实际上,您还应该为字符串的末尾添加一个锚点) –

+0

@xdazz我编辑了转义序列,它们不正确。 – Juvanis

相关问题