Регулярное выражение для домена с адреса электронной почты

Может кто-нибудь помочь мне с регулярным выражением, которое будет возвращать конечную часть адреса электронной почты после символа @? Я новичок в регулярных выражениях, но хочу научиться использовать его, а не писать неэффективные строковые функции.Net!

Например, для ввода "test@example.com" мне нужен вывод "example.com".

Ура! Тим

8 ответов

Решение

Регулярное выражение довольно тяжелая техника для этой цели. Просто разделите строку, содержащую адрес электронной почты на @ характер и возьмите вторую половину. (Адрес электронной почты гарантированно содержит только один @ персонаж.)

@(.*)$

Это будет соответствовать символу @, а затем захватывать все до конца ввода ($)

Это универсальный сопоставитель электронной почты:

[a-zA-Z][\w\.-]*[a-zA-Z0-9]@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])

Обратите внимание, что он захватывает только группу домена; если вы используете следующее, вы можете захватить часть, продолжая @ также:

([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])

Я не уверен, соответствует ли это RFC 2822, но я сомневаюсь в этом.

Вау, все ответы здесь не совсем правильные.

Адрес электронной почты может содержать столько "@", сколько вы хотите, и последний не обязательно тот, что перед доменом:(

например, это действительный адрес электронной почты:

user@example.com(i'm a comment (with an @))

Вы должны быть довольно жестоким, чтобы сделать это ваш адрес электронной почты, хотя.

Итак, сначала разберитесь с любыми комментариями в конце.

затем

int atIndex = emailAddress.LastIndexOf("@");
String domainPart = emailAddress.Substring(atIndex + 1);

Простое регулярное выражение для вашего ввода:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$

Но это может оказаться бесполезным, когда вы подаете заявку на широкий и разнородный домен.

Примером является:

^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)$

Но вы можете оптимизировать суффиксные домены по мере необходимости.

Но для ваших суффиксов вам нужно просто:

@. + $

Ресурсы: http://www.regular-expressions.info/email.html

$input=hardiksondagar@gmail.com;
// now you want to fetch gmail from input user PHP's inbuilt function 
preg_match('/@(.*)/', $input, $output);
echo $output[1]; // it'll print "gmail.com"
  • Документация по функции: preg_match()

Попробуйте это регулярное выражение:

(?<=([\w-\.]@))((?:[\w]+\.)+)([a-zA-Z]{2,4})

Другой более короткий пример: @([\w.-]+)\.

https://regex101.com/r/gmOH52/2

(@)(\w+\-|\w+)+(\.)

Я не эксперт, но приведенное выше выражение - это то, что вам нужно, чтобы получить домен из электронной почты, по крайней мере, насколько я могу судить.

Проблема заключается в том, что вы получаете не только домен, но и "@" и ".". Для доступа к имени домена в регулярном выражении вы используете "$2" и для сохранения "@" и ".", Вы можете использовать выражение вроде:

$1newdomain$3

http://www.regexr.com/

Сайт выше - хорошее место, чтобы попробовать регулярные выражения, чтобы увидеть, как и если это работает.

Другие вопросы по тегам