проверить поле электронной почты с помощью регулярных выражений - PullRequest
2 голосов
/ 26 апреля 2011

Мне нужно проверить, нет ли в строке (локальной части адреса электронной почты) ничего, кроме:

  • буквы (a-zA-Z)
  • цифры (0-9)
  • подчеркивает
  • не более одной точки (.)

Как мне это сделать, используя Java regex?

Пример: a_1_b.c и a_b_1, должно быть в порядке, но 1.a_b.2 и 1_a*3 должны быть отброшены.

Ответы [ 5 ]

8 голосов
/ 26 апреля 2011

Если вы хотите проверить правильность электронной почты, вы можете просто положиться на JavaMail API , чтобы сделать это за вас.Тогда вам не нужно беспокоиться о кодировании деталей спецификации RFC 822 в регулярное выражение.Не говоря уже о том, что если вы имеете дело с адресами электронной почты, вам, вероятно, нужен простой способ их отправки, и в библиотеке это тоже есть.Вы можете проверить, что адрес электронной почты действителен просто:

try {
    new InternetAddress(email).getAddress();
} catch (AddressException e) {
    // it's not valid
}
2 голосов
/ 26 апреля 2011

Вы должны найти больше информации здесь .

1 голос
/ 27 апреля 2011

Регулярное выражение [\w]*\.[\w]+|[\w]+ должно работать, я думаю.

0 голосов
/ 26 апреля 2011

Предполагая, что также должен быть ровно один '@', и он должен предшествовать (но не сразу) одиночному '.', Вы можете сделать

final static private String charset = "[a-zA-Z0-9_]"; // separate this out for future fixes
final static priavte String regex = charset + "+@" + charset + "+\." + charset + "+";

boolean validEmail(String email) {
    return email.matches(regex);
}
0 голосов
/ 26 апреля 2011

Чтобы проверить свой собственный формат, это должно работать:

Pattern p = Pattern.compile("[a-zA-Z0-9_]+[\\.]{0,1}[a-zA-Z0-9_]*");
  • a_1_b.c должно быть в порядке
  • a_1b также
  • 1.a_b.2 и 1_a * 3 должны быть отклонены

Проверьте это на http://www.regexplanet.com/simple/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...