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

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

например. для ввода "[email protected]" мне нужен вывод "example.com".

Ура! Тим

Ответ 1

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

Ответ 2

@(. *) $

Это будет соответствовать значению @, а затем забрать все до конца ввода ($)

Ответ 3

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

[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, но я сомневаюсь.

Ответ 4

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

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

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

Пример:

^[A-Z0-9._%+-][email protected][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

Ответ 5

Ничего себе, все ответы здесь не совсем правильные.

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

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

[email protected](i'm a comment (with an @))

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

Итак, сначала проанализируйте комментарии в конце.

Тогда

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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

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

$1newdomain$3

http://www.regexr.com/

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