JavaScript正则表达式从字符串中获取所有电子邮件

问题描述:

给定一个字符串,如何匹配所有电子邮件内的“<>”。JavaScript正则表达式从字符串中获取所有电子邮件

例如:

我可以有[email protected]<[email protected]>,我只希望匹配的[email protected]

谢谢!

+0

你的字符串看起来像是'[email protected] ',因为这与你所说的不同,我认为。此外,正则表达式不是一切的答案。电子邮件旨在通过向该地址发送电子邮件来进行验证,而不是通过猜测什么是有效的。有很多理由让他们无效。 – jcolebrand 2011-06-07 18:05:01

要真正彻底,你可以从RFC822, which describes valid email address formats然而实现正则表达式,你可以通过做一些快速和简单的像这样节省时间和头痛:

var extractEmailAddress = function(s) { 
    var r=/<?(\[email protected][^\s>]+)>?/, m=(""+s).match(r); 
    return (m) ? m[1] : undefined; 
}; 
extractEmailAddress('[email protected]'); // => "[email protected]" 
extractEmailAddress('<[email protected]>'); // => "[email protected]" 

当然,这个功能将是很宽容字符串可能甚至远程看起来像一个电子邮件地址,所以如果质量是一个问题,可以改进正则表达式“r”。