有人能帮我写一个正则表达式,以返回邮件地址中 @ 符号后面的部分吗? 我对正则表达式不太熟悉,但想学习如何使用它而不是编写效率低下的 .Net 字符串函数!
例如,如果输入为“test@example.com”,则需要输出“example.com”。
谢谢! Tim
有人能帮我写一个正则表达式,以返回邮件地址中 @ 符号后面的部分吗? 我对正则表达式不太熟悉,但想学习如何使用它而不是编写效率低下的 .Net 字符串函数!
例如,如果输入为“test@example.com”,则需要输出“example.com”。
谢谢! Tim
正则表达式对于这个目的来说有点过于复杂了。只需在包含电子邮件地址的字符串中使用 @
字符进行分割,然后取第二部分即可。(电子邮件地址保证只包含一个 @
字符。)
这将与@进行匹配,然后捕获一直到输入结束的所有内容($)
(
,)
表示一个组匹配,所以确保你从索引为1的组中获取结果,而不是0(因为索引#0总是保留给整个表达式匹配)。 - Paul Lammertsma[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)$
但是,您可以根据需要优化后缀域。
但是对于您的后缀需求,您只需要:
@.+$
^[A-Z0-9._%+-]+@([A-Z0-9.-]+\.[A-Z]{2,4})$
- Paul Lammertsma$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"
(?<=([\w-\.]@))((?:[\w]+\.)+)([a-zA-Z]{2,4})
(@)(\w+\-|\w+)+(\.)
我不是专家,但上述表达式是您需要从电子邮件中获取域的内容,至少在我看来是这样。
问题如指出的那样,您捕获的不仅是域名,还有“@”和“.”。要在正则表达式中访问域名,可以使用“$2”,为了保留“@”和“。”,可以使用以下表达式:
$1newdomain$3
上述网站是尝试正则表达式以查看其工作情况的好地方。