【问题标题】:Check Java String containing one alpha & numeric characters and one of these special characters(@, #,$) [closed]检查包含一个字母和数字字符以及这些特殊字符之一的Java字符串(@,#,$)[关闭]
【发布时间】:2016-05-21 20:48:27
【问题描述】:

您好,我想检查一个字符串是否包含一个字母、一个数字和至少一个这些特殊字符(@、#、$)。所以谁能指导我解决这个问题。

注意:我有 apache common lang 3.0 库。对我们解决上述问题有帮助吗?

【问题讨论】:

  • 阅读 regEx 或至少 google 以了解 String 中的 contains 方法。到目前为止你尝试过什么?

标签: java apache-commons


【解决方案1】:

您可以使用 String.matches() 和正则表达式来做到这一点。考虑以下解决方案。

public boolean isAlphaNumeric(String s){
String pattern= "^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$*()_+])[A-Za-z\d][A-Za-z\d!@#$*()_+]";
    if(s.matches(pattern)){
        return true;
    }
    return false;   

}

让我知道它是否有效。

【讨论】:

  • 不工作。它不允许其他特殊字符。此外,如果您的字符串仅包含“ganesh”,则为 true,但应返回 false。对于我的情况,字符串应包含至少一个数字和特殊字符($、@、#)。
【解决方案2】:

这是一个简单的实现。

private static boolean isValidPassword(char[] password) {
    boolean hasLetter = false, hasDigit = false, hasSpecial = false;
    for (char ch : password)
        if (Character.isLetter(ch))
            hasLetter = true;
        else if (Character.isDigit(ch))
            hasDigit = true;
        else if ("@#$".indexOf(ch) != -1)
            hasSpecial = true;
    return (hasLetter && hasDigit && hasSpecial);
}

我可以根据需要调整“字母”、“数字”和“特殊”的精确定义,并在找到所有 3 个时尽早停止搜索(如果需要)。

【讨论】:

  • 谢谢安德烈亚斯。它正在工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 2012-12-27
  • 2012-05-01
  • 2012-02-06
  • 2015-11-09
  • 2010-12-20
  • 2016-01-14
相关资源
最近更新 更多