我尝试使用以下表达式来检查密码是否是数字和字母的组合,尽管字母和数字的顺序不同
password.matches("[a-zA-z]{1,}[0-9]{1,}")
但是上面的代码会检查字母在前,数字在后的顺序
如果密码看起来像“hello1213”和“123hello”,那么密码是可以接受的
最佳答案
如果您没有任何强制字母或数字的计划,那么这样就可以了:
password.matches("^[a-zA-Z0-9]+$");
但是,如果您计划至少包含一位数字和一个字母,请尝试以下操作:
password.matches("^(?=.*[0-9])(?=.*[a-zA-Z])[a-zA-Z0-9]+$");
(?=.*[0-9])
是正前瞻,检查输入是否至少有一位数字,以及类似的前瞻 (?=.*[a -zA-Z])
检查最小字母。
注意:由于您使用的是 matches()
,因此您可以忽略正则表达式中的 anchor ^
$
。当您通过 Pattern
类进行匹配时,这些是必需的。
关于java - 如何使用正则表达式检查密码是否包含字母和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22971662/