gpt4 book ai didi

java - 关注 Java 中的正则表达式和模式编译

转载 作者:行者123 更新时间:2023-11-29 08:10:04 27 4
gpt4 key购买 nike

请给我Java中密码验证的正则表达式代码,它应该由一个大写字符、一个整数、一个后面的符号(@、#、$、%、^、&、+、=)和小字符组成。

我一直在尝试使用不同的独立正则表达式和一个组合的正则表达式。

实际上,我已经有了一个可以评估 javascript 中所有条件的正则表达式。我无法在 Java 后端使用它。我尝试转义 \。它也不起作用。

这是我的代码:

    Pattern pattern = Pattern.compile("/.*(?=.{6,})(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/");
Matcher matcher = pattern.matcher("Aa@1");
if(matcher.matches()){
System.out.println("Matched");
}
else{
System.out.println("No mat");
}

原始的javascript正则表达式是

/.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/

由于转义字符,\d 给了我错误。因此,我在 Java 版本之前添加了另一个 \

我无法理解出了什么问题。

提前致谢。

最佳答案

你快到了,但你错过了一些细节:

首先,出发点不好——JavaScript 正则表达式很丑。而不是

/.*(?=.{6,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/

使用这个:

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).{6,}$/

然后,要将正则表达式转换为 Java,您需要删除定界符(并使用引号代替,而不是像您所做的那样)并加倍反斜杠(就像您已经做的那样):

Pattern pattern = Pattern.compile("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).{6,}$");

现在它应该可以工作了。

关于java - 关注 Java 中的正则表达式和模式编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8646052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com