Java regex email

后端 未结 20 2449
清歌不尽
清歌不尽 2020-11-22 13:09

First of all, I know that using regex for email is not recommended but I gotta test this out.

I have this regex:

\\b[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]         


        
20条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-22 13:29

    This is a valid regex for validating e-mails. It's totally compliant with RFC822 and accepts IP address and server names (for intranet purposes).

    public static boolean isEmailValid(String email) {
        final Pattern EMAIL_REGEX = Pattern.compile("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", Pattern.CASE_INSENSITIVE);
        return EMAIL_REGEX.matcher(email).matches();
    }
    

    Here are some output examples, when you call isEmailValid(emailVariable):

    john@somewhere.com // valid
    john.foo@somewhere.com // valid
    john.foo+label@somewhere.com // valid (with +label - Gmail accepts it!)
    john@192.168.1.10 // valid (with IP addresses)
    john+label@192.168.1.10 // valid (with +label and IP address)
    john.foo@someserver // valid (with no first domain level)
    JOHN.FOO@somewhere.com // valid (case insensitive)
    @someserver // invalid
    @someserver.com // invalid
    john@. // invalid
    .@somewhere.com // invalid
    

提交回复
热议问题