正则表达式Java:8个字符长,至少2位,仅字母数字
需要一些帮助来制作一个至少支持8个字符、至少2个数字、仅支持字母数字的表达式吗 这就是我尝试过的:正则表达式Java:8个字符长,至少2位,仅字母数字,java,regex,Java,Regex,需要一些帮助来制作一个至少支持8个字符、至少2个数字、仅支持字母数字的表达式吗 这就是我尝试过的: ^((?=.*\\d){2})[a-zA-Z0-9]{8,}$ 这些字符串应通过: Abjh23af 879789765 legoF111 这些字符串不应通过: Danrad1d = Only contain one digit FFJURi22@ = Contain a @ symbols aj22b34 = String is less then 8 你能行 example.matche
^((?=.*\\d){2})[a-zA-Z0-9]{8,}$
这些字符串应通过:
Abjh23af
879789765
legoF111
这些字符串不应通过:
Danrad1d = Only contain one digit
FFJURi22@ = Contain a @ symbols
aj22b34 = String is less then 8
你能行
example.matches("\\w*(\\d\\w*){2}")
此代码
String[] examples = ("Abjh23af\n" +
"879789765\n" +
"legoF111\n" +
"Danrad1d = Only contain one digit\n" +
"FFJURi22@ = Contain a @ symbols\n" +
"aj22b34 = String is less then 8").split("\n");
for (String example : examples) {
System.out.println(example + " - " + example.matches("\\w*(\\d\\w*){2}"));
}
印刷品
Abjh23af - true
879789765 - true
legoF111 - true
Danrad1d = Only contain one digit - false
FFJURi22@ = Contain a @ symbols - false
aj22b34 = String is less then 8 - false
尝试从以下位置更改正则表达式字符串:
((?=.*\\d){2})[a-zA-Z0-9]{8,}
致:
只需移动一个右括号。但是仍然有一个小错误,只有当两个数字是连续的时才会通过。需要再添加一对括号
((?=(.*\\d){2})[a-zA-Z0-9]{8,})
完成(在末尾添加一个测试用例,以说明需要添加一对括号):
为什么要使用正则表达式?在没有输入的情况下验证输入非常容易。@ILoveCoding,我想知道在基本Java中不使用regrex如何进行验证,用charecter测试字符串是没有效率的,regrex将为我们做这件事easily@ILoveCoding,在没有正则表达式的情况下如何验证?我相信正则表达式是最简单的方法。仍然不能正常工作,仍然传递少于8个字符的字符串。您的
示例变量后面包含解释=…
,因此测试结果没有任何意义
((?=(.*\\d){2})[a-zA-Z0-9]{8,})
public class PasswordValidator {
private static final int MAX_LENGTH = 20;
private static final String PASSWORD_PATTERN = String.format(
"((?=(.*\\d){2})[a-zA-Z0-9]{8,%d})", MAX_LENGTH);
private Pattern pattern;
private Matcher matcher;
public PasswordValidator() {
pattern = Pattern.compile(PASSWORD_PATTERN);
}
public boolean validate(final String password) {
matcher = pattern.matcher(password);
return matcher.matches();
}
public static void main(String[] args) {
PasswordValidator pv = new PasswordValidator();
System.out.println(pv.validate("Abjh23af")); // pass
System.out.println(pv.validate("879789765")); // pass
System.out.println(pv.validate("legoF111")); // pass
System.out.println(pv.validate("Danrad1d")); // fail
System.out.println(pv.validate("FFJURi22@")); // fail
System.out.println(pv.validate("aj22b34")); // fail
System.out.println(pv.validate("1abcdef2")); // pass (thanks to extra parenthesis)
}
}