繁体   English   中英

验证Java中包含非英语(UTF-8)字符的电子邮件地址

[英]validating email address which contains non-english (UTF-8) character in Java

我有休假的电子邮件ID

闪闪发光@闪闪发光.com 

我需要在服务器端验证此类电子邮件,以便用户无法输入此类电子邮件。
我通过使用以下正则表达式解决了javascript中的类似问题-

/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/gi

但。 无法在Java中执行相同的操作。请帮助我。
提前致谢!!!

Java正则表达式模式(?i)[-a-z0-9+_][-a-z0-9+_.]*@[-a-z0-9][-a-z0-9.]*\\\\.[az]{2,6}就足够了。 模式的含义如下:

(?i)            # Case insensitive flag
[-a-z0-9+_]     # First character
[-a-z0-9+_.]*   # Zero or more characters
@               # Literal '@' character
[-a-z0-9]       # Match a single character
[-a-z0-9.]*     # Match zero or more characters
\.              # Literal '.' character
[a-z]{2,6}      # Match 2 through 6 alpha characters

以下测试代码...

final String ps =
        "(?i)[-a-z0-9+_][-a-z0-9+_.]*@[-a-z0-9][-a-z0-9.]*\\.[a-z]{2,6}";
final Pattern p = Pattern.compile(ps);
for (String s : new String[] {"foo@bar.COM", "+foo@bar.COM",
        "-foo@bar.COM", "fo_o@bar.COM", "f.oo@bar.COM", "a@b.cdefgh",
        "3@4.com", "3@4.5.6-7.8.com", ".foo@bar.com", "a@b.cdefghi",
        "闪闪发光@闪闪发光.com"})
{
    final Matcher m = p.matcher(s);
    if (m.matches()) {
        System.out.println("Success: " + s);
    } else {
        System.out.println("Fail: " + s);
    }
}

...将输出:

Success: foo@bar.COM
Success: +foo@bar.COM
Success: -foo@bar.COM
Success: fo_o@bar.COM
Success: f.oo@bar.COM
Success: a@b.cdefgh
Success: 3@4.com
Success: 3@4.5.6-7.8.com
Fail: .foo@bar.com
Fail: a@b.cdefghi
Fail: 闪闪发光@闪闪发光.com

通过使用Matcher.matches()方法,由于Matcher.matches()将在整个字符串上进行匹配,因此无需包括^ -行开始或$ -行边界匹配结构。

[更新]对不起,js代码。 尝试这个:

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();

          }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM