来自电子邮件地址的正则表达式

时间:2009-09-28 15:46:18

标签: .net regex email-address

任何人都可以帮助我使用正则表达式,它将在@符号后面返回电子邮件地址的末尾部分吗?我是regex的新手,但想学习如何使用它而不是编写低效的.Net字符串函数!

E.g。输入“test@example.com”我需要输出“example.com”。

干杯! 添

9 个答案:

答案 0 :(得分:17)

正则表达式是用于此目的的非常重的机器。只需将包含电子邮件地址的字符串拆分为@字符,然后取下半部分。 (电子邮件地址保证只包含一个@个字符。)

答案 1 :(得分:14)

@(。*)$

这将与@匹配,然后捕获所有内容直到输入结束($)

答案 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,但我对此表示怀疑。

答案 3 :(得分:3)

哇,这里的所有答案都不太正确。

电子邮件地址可以包含任意数量的“@”,最后一个不一定是域名之前的那个:(

例如,这是一个有效的电子邮件地址:

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

你必须非常吝啬地把它作为你的电子邮件地址。

首先,在最后解析任何评论。

然后

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

答案 4 :(得分:2)

您输入的简单正则表达式是:

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

答案 5 :(得分: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()

答案 6 :(得分:1)

试试这个正则表达式:

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

答案 7 :(得分:0)

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

我不是专家,但上面的表达是你从电子邮件中获取域名所需要的,至少据我所知。

问题是指出你不仅要抓住域而且要抓住&#34; @&#34;和&#34;。&#34;。要在正则表达式中访问域名,请使用&#34; $ 2&#34;并保留&#34; @&#34;和&#34;。&#34;,您可以使用如下表达式:

$1newdomain$3

http://www.regexr.com/

上面的网站是试用正则表达式以查看它是如何工作的好地方。

答案 8 :(得分:0)

另一个简短的示例是 @([\w.-]+)\.

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