java - 如何使用正则表达式检查密码是否包含字母和数字

标签 java regex

我尝试使用以下表达式来检查密码是否是数字和字母的组合,尽管字母和数字的顺序不同

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/

相关文章:

java - 如何在 Eclipse 中的类而不是一行上设置断点?

java - 在 Spring 中解析包含 .jsp 的 URL 请求

python - 正则表达式匹配没有指定空格的字符

java - 使用子正则表达式进行前瞻

仅在未找到重复行时才匹配的正则表达式

r - 提取第一节和第三节之间的字符

java - 使用比较器对 Java TreeSet 进行排序

按钮的 JavaFX 条件 CSS 样式

C# 验证用户输入,如信用卡号

java - 主要方法中的 Hadoop 控制作业