import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:[\\p{L}\\p{M}\\p{N}!#$%&'*+/=?^`\\{|\\}~-]|[\\p{L}\\p{M}\\p{N}!#$%&'*+/=?^`\\{|\\}~-](?:[\\p{L}\\p{M}\\p{N}!#$%&'*+/=?^`\\{|\\}~-]|\\.(?!\\.)){0,62}[\\p{L}\\p{M}\\p{N}!#$%&'*+/=?^`\\{|\\}~-])@(?:[\\p{L}\\p{M}\\p{N}]|[\\p{L}\\p{M}\\p{N}][\\p{L}\\p{M}\\p{N}_-]{0,61}[\\p{L}\\p{M}\\p{N}])(?:\\.(?:[\\p{L}\\p{M}\\p{N}]|[\\p{L}\\p{M}\\p{N}][\\p{L}\\p{M}\\p{N}_-]{0,61}[\\p{L}\\p{M}\\p{N}]))+\\.?$";
final String string = "VALID_SUPPORTED\n\n"
+ "-hello@world.co\n"
+ "hello.world@co.co\n"
+ "simple@example.com\n"
+ "underscore@in_domain.net\n"
+ "simple@example.com.\n"
+ "very.common@example.com\n"
+ "संपर्क@डाटामेल.भारत\n"
+ "disposable.style.email.with+symbol@example.com\n"
+ "медведь@с-балалайкой.рф\n"
+ "other.email-with-hyphen@example.com\n"
+ "fully-qualified-domain@example.com.\n"
+ "user.name+tag+sorting@example.com\n"
+ "Pelé@example.com\n"
+ "x@example.com\n"
+ "example-indeed@strange-example.com\n"
+ "test/test@test.com\n"
+ "böb@example.com\n"
+ "BÖB@gmail.com\n"
+ "example@s.example\n"
+ "mailhost!username@example.org\n"
+ "user%example.com@example.org\n"
+ "user-@example.org\n"
+ "20401@some.email\n\n"
+ "MAYBE_VALID_MAYBE_SUPPORTED\n\n"
+ "domain.end.with.nums@no.good.127\n"
+ "mason@日本.com\n"
+ "user@example.😀\n"
+ "☹️@hello.world\n\n"
+ "VALID_UNSUPPORTED\n\n"
+ "hns@neel\n"
+ "admin@mailserver1\n"
+ "\" \"@example.org\n"
+ "\"john..doe\"@example.org\n"
+ "\"very.(),:;<>[]\\\".VERY.\\\"very@\\\\ \\\"very\\\".unusual\"@strange.example.com\n"
+ "postmaster@[123.123.123.123]\n"
+ "postmaster@[IPv6:2001:0db8:85a3:0000:0000:8a2e:0370:7334]\n\n"
+ "INVALID\n\n"
+ "hello..world@co.co\n"
+ "hello@world-.co\n"
+ "hello@.world.co\n"
+ "Abc.example.com\n"
+ "A@b@c@example.com\n"
+ "a\"b(c)d,e:f;g<h>i[j\\k]l@example.com\n"
+ "just\"not\"right@example.com\n"
+ "this is\"not\\allowed@example.com\n"
+ "this\\ still\\\"not\\\\allowed@example.com\n"
+ "1234567890123456789012345678901234567890123456789012345678901234+x@example.com\n"
+ "i_like_underscore@but_its_not_allowed_in_this_part.example.com\n"
+ "QA[icon]CHOCOLATE[icon]@test.com";
final Pattern pattern = Pattern.compile(regex, Pattern.UNICODE_CASE | Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html