【问题标题】:How can a string be validated in Java?如何在 Java 中验证字符串?
【发布时间】:2011-04-13 13:35:34
【问题描述】:

如何在 Java 中验证字符串? IE。只允许字符而不是数字?电子邮件验证怎么样?

【问题讨论】:

标签: java string validation


【解决方案1】:

如何在 java 中验证字符串?

一种常见的方法是使用正则表达式或正则表达式。在 Java 中,您可以使用 String.matches(String regex) 方法。对于正则表达式,我们说您将字符串与 pattern 匹配如果匹配成功,.matches() 返回 true。


只允许字符而不是数字?

// You can use this pattern:
String regex = "^[a-zA-Z]+$";
if (str.matches(regex)) { 
    // ...
}

电子邮件验证?

电子邮件地址有一个very complicated spec,这需要一个可怕的正则表达式才能准确。这个不错,很短,但不完全正确:

String regex = "\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}\\b";
if (str.matches(regex)) { 
    // ...
}

如果你真的想研究它:How to validate emailComparing email validating regexes (PHP)。


这是开始使用正则表达式的绝佳资源:
http://www.regular-expressions.info

【讨论】:

    【解决方案2】:

    对于只有字符的字符串尝试

    private boolean verifyLastName(String lname)
    {
        lname = lname.trim();
    
        if(lname == null || lname.equals(""))
            return false;
    
        if(!lname.matches("[a-zA-Z]*"))
            return false;
    
        return true;
    }
    

    电子邮件验证尝试

    private boolean verifyEmail(String email)
    {
        email = email.trim();
    
        if(email == null || email.equals(""))
            return false;
    
        if(!email.matches("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$"))
            return false;
    
        return true;
    }
    

    【讨论】:

    • 检查空字符串或修剪它真的没有意义,因为你可以用正则表达式来处理。
    • trim 应该在 null 检查之后完成...否则您将抛出 NullPointerException...
    【解决方案3】:

    对于这样的简单情况,请使用 RegExp,因为 NullUserException 已经建议。如果您需要更强大的解决方案,您可以使用一些验证框架,即Apache Commons Validator

    【讨论】:

      【解决方案4】:

      如果您将Apache commons-lang 作为项目依赖项(这很常见),您可以使用StringUtils.isAlpha()。如果您有更具体的验证或不希望依赖 commons-lang,您可以使用正则表达式和String.matches()

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 1970-01-01
        • 2011-06-02
        • 2015-11-06
        • 1970-01-01
        • 2012-10-02
        • 2021-06-20
        • 2017-06-10
        • 2016-03-19
        相关资源
        最近更新 更多