使用jquery从批量文本中提取所有电子邮件地址

我有以下文字:

sdabhikagathara@rediffmail.com, "assdsdf" , "rodnsdfald ferdfnson" , "Affdmdol Gondfgale" , "truform techno" , "NiTsdfeSh ThIdfsKaRe" , "akasdfsh kasdfstla" , "Bisdsdfamal Prakaasdsh" ,; "milisdfsfnd ansdfasdfnsftwar"  

这里的电子邮件是由,或者; 。 我想提取上面的所有电子邮件并将它们存储在数组中。 有没有简单的方法使用正则表达式直接获取所有电子邮件?

以下是您如何处理此问题的方法:

HTML

 

JavaScript的

 var text = 'sdabhikagathara@rediffmail.com, "assdsdf" , "rodnsdfald ferdfnson" , "Affdmdol Gondfgale" , "truform techno" , "NiTsdfeSh ThIdfsKaRe" , "akasdfsh kasdfstla" , "Bisdsdfamal Prakaasdsh" ,; "milisdfsfnd ansdfasdfnsftwar" '; function extractEmails (text) { return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); } $("#emails").text(extractEmails(text).join('\n')); 

结果

 sdabhikagathara@rediffmail.com dsfassdfhsdfarkal@gmail.com rfernsdfson@gmal.com gyfanamosl@gmail.com pidfpinfg@truformdftechnoproducts.com nthfsskare@ysahoo.in akashkatsdfsa@yahsdfsfoo.in bimsdaalprakash@live.com dfdmilifsd.ensfdfcogndfdfatia@gmail.com 

来源: 从批量文本中提取电子邮件(使用正则表达式,JavaScript和jQuery)

演示1在这里

演示2这里使用jQuery的每个迭代器函数

你可以使用这个正则表达式:

 var re = /(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/g; 

你可以像这样提取电子邮件:

 ('sdabhikagathara@rediffmail.com, "assdsdf" , "rodnsdfald ferdfnson" , "Affdmdol Gondfgale" , "truform techno" , "NiTsdfeSh ThIdfsKaRe" , "akasdfsh kasdfstla" , "Bisdsdfamal Prakaasdsh" ,; "milisdfsfnd ansdfasdfnsftwar" ').match(re); //["sdabhikagathara@rediffmail.com", "dsfassdfhsdfarkal@gmail.com", "rfernsdfson@gmail.com", "gyfanamosl@gmail.com", "pidfpinfg@truformdftechnoproducts.com", "nthfsskare@ysahoo.in", "akashkatsdfsa@yahsdfsfoo.in", "bimsdaalprakash@live.com", "dfdmilifsd.ensfdfcogndfdfatia@gmail.com"] 

只是对已接受答案的更新。 这不适用于电子邮件地址中的“加号”标志。 GMAIL支持emailaddress+randomtext@gmail.com。

我更新到:

 return text.match(/([a-zA-Z0-9._+-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi); 
 function GetEmailsFromString(input) { var ret = []; var email = /\"([^\"]+)\"\s+\<([^\>]+)\>/g var match; while (match = email.exec(input)) ret.push({'name':match[1], 'email':match[2]}) return ret; } var str = '"Name one" , ..., "And so on" ' var emails = GetEmailsFromString(str) 

资源

你不需要jQuery; JavaScript本身支持内置的正则表达式。

有关使用带有JavaScript的正则表达式的更多信息,请查看正则表达式。

除此之外,我想你会在Stack Overflow上的其他地方找到你问题的确切答案 – 如何在javascript中查找字符串中的电子邮件和名称

根据Regexr.com ,上述function符合RFC2822标准

ES5:

 var extract = function(value) { var reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g; return value && value.match(reg); } 

ES6:

 const reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/g const extract = value => value && value.match(reg) 

Regexr社区来源