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

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

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

Ура! Тим!--1-->

8 ответов


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


@(.*)$

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


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

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


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

^[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


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

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

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

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

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

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

затем

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

$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+\-|\w+)+(\.)

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

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

newdomain

http://www.regexr.com/

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