gpt4 book ai didi

java - 如何匹配字符串中任意位置的非单词字符?

转载 作者:行者123 更新时间:2023-12-01 14:20:38 24 4
gpt4 key购买 nike

这是一个简单的问题,但请听我说完 - Java 家庭作业的一部分有一个密码 validator 方法。要求很简单 - 密码必须介于 6-10 个字符之间,必须仅由数字或字母组成,并且必须至少包含 2 位数字才有效。我用 if 语句和正则表达式做了这个,出于某种原因我无法让非单词字符正则表达式匹配,尽管每个在线正则表达式检查器都显示这应该有效,甚至用于正则表达式检查的 jetbrains 插件显示这应该是有效的。 (我也明白这可以用一行代码而不是任何 if 语句来完成,但这种方式对我来说更简单。

示例输入 - MyPass123 应该是有效的,MyPass123# 应该匹配非单词字符并且应该返回“密码必须只包含字母和数字”而不是这种情况永远不会发生。我是 Java 的初学者,所以即使这是一个如此简单的问题,我很可能没有做正确的事情。提前致谢!

方法代码如下:

public static void passswordCheck(String password)
{
if(password.length()<6 || password.length()>10)
{
System.out.printf("Password needs to be between 6 and 10 characters");
}
else if(password.matches("\\W")) \\This should match when input is MyPass123#
{
System.out.printf("Password must consist only of letters and digits");
}
else if(!password.matches("/(\\d).*(\\d)/"))
{
System.out.printf("Password needs to have at least 2 digits");
}
else
{
System.out.printf("Password is valid");
}
}

最佳答案

仅当字符串由非字母数字的单个字符组成时才匹配(= [^a-zA-Z0-9_])。

如果您想要任何包含至少一个非字母数字字符的字符串:.*?\W.*

关于java - 如何匹配字符串中任意位置的非单词字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63168229/

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