任何人都可以帮助我使用正则表达式,它将在@符号后面返回电子邮件地址的末尾部分吗?我是regex的新手,但想学习如何使用它而不是编写低效的.Net字符串函数!
E.g。输入“test@example.com”我需要输出“example.com”。
干杯! 添
答案 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)$
但是,您可以根据需要优化后缀域。
但是对于你的后缀需求,你需要:
@。+ $
答案 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"
答案 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
上面的网站是试用正则表达式以查看它是如何工作的好地方。
答案 8 :(得分:0)
另一个简短的示例是 @([\w.-]+)\.