Java 无重复字符序列的Passay密码
我正在使用passay库根据一系列要求验证密码:Java 无重复字符序列的Passay密码,java,security,passwords,Java,Security,Passwords,我正在使用passay库根据一系列要求验证密码: <dependencies> <dependency> <groupId>org.passay</groupId> <artifactId>passay</artifactId> <version>1.4.0</version> </dependency> </dependencies> or
<dependencies>
<dependency>
<groupId>org.passay</groupId>
<artifactId>passay</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
org.passay
),但该规则仅适用于相同字符的序列(它将找到“aaa”,但不会找到“abab”)
passay是否有执行此操作的规则,或者我必须编写自定义规则?嗯,我认为没有,但您不必编写自己的规则,如果需要,请尝试以下操作:
公共类重复序列扩展测试{
最终密码验证器验证器=新密码验证器(
新的非法规则(“({1,})\\1”)
);
@试验
公开作废支票(){
assertTrue(validator.validate(新密码数据(“正常”)).isValid();
assertTrue(validator.validate(新密码数据(“abcdef”)).isValid();
assertTrue(validator.validate(新密码数据(“ABACADEAF”)).isValid();
assertTrue(validator.validate(新密码数据(“xyzxy”)).isValid();
assertTrue(validator.validate(新密码数据(“12345”)).isValid();
assertTrue(validator.validate(新密码数据(“121314”)).isValid();
assertTrue(validator.validate(新密码数据(“1234123121”)).isValid();
assertTrue(validator.validate(新密码数据(“123xy123”)).isValid();
assertTrue(validator.validate(新密码数据(“1”)).isValid());
assertTrue(validator.validate(新密码数据(“”).isValid());
assertFalse(validator.validate(新密码数据(“apple”)).isValid());
assertFalse(validator.validate(新密码数据(“香蕉”)).isValid());
assertFalse(validator.validate(新密码数据(“112233”)).isValid();
assertFalse(validator.validate(新密码数据(“123123”)).isValid();
assertFalse(validator.validate(新密码数据(“1212”)).isValid();
assertFalse(validator.validate(新密码数据(“11”)).isValid());
assertFalse(validator.validate(新密码数据(“123xy123xy”)).isValid();
}
}
这个正则表达式工作得很好。我不熟悉“\1”(反向引用)。