我的问题是我有一个表达式可以评估给定的用户密码,以验证它是否制作精良。我的表情是这样的:
"((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"
嗯,我的问题是,当我直接使用 string.matches() 方法放置这个字符串时,它会与密码一起使用,但是如果我将它放在 Spring 注入(inject)的映射中,就像那样
<map>
<entry key="PASSWORD_FILTER_EXPRESSION" value="((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})" />
</map>
并使用它从这里加载它不起作用。我一直在调试,显然它在两个地方都使用相同的字符串,问题出在哪里?
最佳答案
转义斜线:
"((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})"
关于Java 表达式在直接在代码中声明时有效,但在从 Spring 注入(inject)加载时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9399349/