【发布时间】:2011-04-13 13:35:34
【问题描述】:
如何在 Java 中验证字符串? IE。只允许字符而不是数字?电子邮件验证怎么样?
【问题讨论】:
标签: java string validation
如何在 Java 中验证字符串? IE。只允许字符而不是数字?电子邮件验证怎么样?
【问题讨论】:
标签: java string validation
如何在 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 email 和 Comparing email validating regexes (PHP)。
这是开始使用正则表达式的绝佳资源:
http://www.regular-expressions.info
【讨论】:
对于只有字符的字符串尝试
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...
对于这样的简单情况,请使用 RegExp,因为 NullUserException 已经建议。如果您需要更强大的解决方案,您可以使用一些验证框架,即Apache Commons Validator。
【讨论】:
如果您将Apache commons-lang 作为项目依赖项(这很常见),您可以使用StringUtils.isAlpha()。如果您有更具体的验证或不希望依赖 commons-lang,您可以使用正则表达式和String.matches()。
【讨论】: