如何在文本框中接受有效的电子邮件ID?

时间:2010-04-13 18:39:03

标签: java jsp

我使用servlet和jsp设计了一个聊天应用程序。我为用户登录设计了一个页面,我接受使用过的id和他的mail-id。我如何确保用户输入了正确的mail-id。我需要一个代码来验证email-id。我的意思是例如用户不能在文本框中输入任何内容。

5 个答案:

答案 0 :(得分:2)

您需要验证电子邮件。最简单的方法是使用正则表达式:有信息here。当然,当您验证表单时,这将在客户端。

如果您正在使用hibernate bean验证,那么您也可以使用@Email注释。

答案 1 :(得分:2)

如果您正在进行服务器端验证,Apache Commons EmailValidator会执行此操作。如果您担心客户端验证,那么您需要创建一个正则表达式并使用JavaScript与之匹配。

EmailValidator validator = EmailValidator.getInstance();
if (validator.isValid(yourEmail)) {
    // valid e-mail
} else {
    // invalid e-mail
}

答案 2 :(得分:1)

您需要确保提供的值传递有效电子邮件地址的正则表达式。

了解详情:http://www.regular-expressions.info/email.html

答案 3 :(得分:1)

这是其他海报使用JavaScript描述的一般概念的简单实现:

function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}

(来自http://www.codetoad.com/javascript/is_valid_email.asp

使用正则表达式验证Java中的电子邮件地址:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class EmailValidator {

      private Pattern pattern;
      private Matcher matcher;

      private static final String EMAIL_PATTERN = 
                   "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@
                   [A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

      public EmailValidator(){
          pattern = Pattern.compile(EMAIL_PATTERN);
      }

      /**
       * Validate hex with regular expression
       * @param hex hex for validation
       * @return true valid hex, false invalid hex
       */
      public boolean validate(final String hex) {

          matcher = pattern.matcher(hex);
          return matcher.matches();
      }
}

(来自http://www.mkyong.com/regular-expressions/how-to-validate-email-address-with-regular-expression/

Google搜索中的每个链接都是#1或#2。

答案 4 :(得分:1)

目前的大多数正则表达式电子邮件验证程序都没有考虑到near future中允许使用域名中的中文和阿拉伯语等“unicode字符”。每个人都必须更改所使用的电子邮件正则表达式,因为在常见的正则表达式解决方案中,[a-z]/i\w肯定不会涵盖这些字符。他们都会失败。

毕竟,验证电子邮件地址的最佳方式仍然是向相关地址发送电子邮件以验证地址。最终用户可以输入一个语法上有效的电子邮件地址,如w40ejk5gdf8sg@xl5er8kw8tklt.com,但显然不存在。如果电子邮件地址是用户身份验证(注册/登录/等)的一部分,那么您可以将其与用户激活系统完美地结合在一起。即向指定的电子邮件地址发送包含带有唯一激活密钥的链接的电子邮件,并且仅当用户使用电子邮件中的链接激活新创建的帐户时才允许登录。

如果正则表达式的目的只是在UI中快速通知用户指定的电子邮件地址看起来不是正确的格式,那么最好仍然检查它是否与以下正则表达式匹配:

^([^.@]+)(\.[^.@]+)*@([^.@]+\.)+([^.@]+)$

这很简单。无需关心名称和域中使用的字符。毕竟客户有责任输入合法的电子邮件地址,而不是服务器。

在Java中,你可以使用上面的正则表达式:

public static boolean isValidEmail(String value) {
    return value.matches("^([^.@]+)(\\.[^.@]+)*@([^.@]+\\.)+([^.@]+)$");
}