在Java中如何验证字符串?

11

如何在Java中验证字符串?即仅允许字符而不允许数字?那电子邮件的验证呢?


4
你可以了解一下正则表达式:http://download.oracle.com/javase/tutorial/essential/regex/ - Tyler
4个回答

13

如何在Java中验证字符串?

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


只允许使用字符,不允许使用数字吗?

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

电子邮件验证?

电子邮件地址有一个非常复杂的规范, 需要一个巨大的正则表达式来确保准确性。下面这个正则表达式较短,但并不完全正确:

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

如果您真的想了解它:如何验证电子邮件比较电子邮件验证正则表达式(PHP)。


这是一个很好的资源,可以帮助你开始学习正则表达式:
http://www.regular-expressions.info


5

对于仅包含字符的字符串,请尝试使用以下方法:

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;
}

1
检查空字符串或修剪它们实际上没有意义,因为您可以使用正则表达式来处理它们。 - NullUserException
1
trim 应该在空值检查之后进行...否则会抛出 NullPointerException 异常... - st0le

4

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


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接