使用jquery从批量文本中提取所有电子邮件地址
Extract all email addresses from bulk text using jquery
我有下面的文本:
sdabhikagathara@rediffmail.com, "assdsdf" <dsfassdfhsdfarkal@gmail.com>, "rodnsdfald ferdfnson" <rfernsdfson@gmail.com>, "Affdmdol Gondfgale" <gyfanamosl@gmail.com>, "truform techno" <pidfpinfg@truformdftechnoproducts.com>, "NiTsdfeSh ThIdfsKaRe" <nthfsskare@ysahoo.in>, "akasdfsh kasdfstla" <akashkatsdfsa@yahsdfsfoo.in>, "Bisdsdfamal Prakaasdsh" <bimsdaalprakash@live.com>,; "milisdfsfnd ansdfasdfnsftwar" <dfdmilifsd.ensfdfcogndfdfatia@gmail.com>
此处电子邮件按,
或;
进行分隔。我想提取上面出现的所有电子邮件,并将它们存储在数组中。有没有什么简单的方法可以使用regex直接获取所有电子邮件?
以下是如何实现这一点:
HTML
<p id="emails"></p>
JavaScript
var text = 'sdabhikagathara@rediffmail.com, "assdsdf" <dsfassdfhsdfarkal@gmail.com>, "rodnsdfald ferdfnson" <rfernsdfson@gmal.com>, "Affdmdol Gondfgale" <gyfanamosl@gmail.com>, "truform techno" <pidfpinfg@truformdftechnoproducts.com>, "NiTsdfeSh ThIdfsKaRe" <nthfsskare@ysahoo.in>, "akasdfsh kasdfstla" <akashkatsdfsa@yahsdfsfoo.in>, "Bisdsdfamal Prakaasdsh" <bimsdaalprakash@live.com>,; "milisdfsfnd ansdfasdfnsftwar" <dfdmilifsd.ensfdfcogndfdfatia@gmail.com> datum eternus hello+11@gmail.com';
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,hello+11@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" <dsfassdfhsdfarkal@gmail.com>, "rodnsdfald ferdfnson" <rfernsdfson@gmail.com>, "Affdmdol Gondfgale" <gyfanamosl@gmail.com>, "truform techno" <pidfpinfg@truformdftechnoproducts.com>, "NiTsdfeSh ThIdfsKaRe" <nthfsskare@ysahoo.in>, "akasdfsh kasdfstla" <akashkatsdfsa@yahsdfsfoo.in>, "Bisdsdfamal Prakaasdsh" <bimsdaalprakash@live.com>,; "milisdfsfnd ansdfasdfnsftwar" <dfdmilifsd.ensfdfcogndfdfatia@gmail.com>').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支持电子邮件地址+randomtext@gmail.com.
我已更新到:
return text.match(/([a-zA-Z0-9._+-]+@[a-zA-Z0-9._-]+'.[a-zA-Z0-9._-]+)/gi);
根据Regexr.com ,以下函数符合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社区源
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" <foo@domain.com>, ..., "And so on" <andsoon@gmx.net>'
var emails = GetEmailsFromString(str)
源
您不需要jQuery;JavaScript本身支持内置正则表达式。
查看正则表达式,了解有关在JavaScript中使用正则表达式的更多信息。
除此之外,我想你会在Stack Overflow上的其他地方找到问题的确切答案-如何在javascript 中从字符串中查找电子邮件和名称
const = regex = /'S+[a-z0-9]@[a-z0-9'.]+/img
"hello sean@example.com how are you? do you know bob@example.com?".match(regex)
这里的一堆答案包括小写/大写字母[a-zA-Z]
和不敏感的正则表达式标志i
,这是无稽之谈。
i
修饰符:不敏感。不区分大小写的匹配(忽略[a-zA-Z]的大小写('d
匹配一个数字(相当于[0-9]
(,因为域扩展不以数字字符结尾(
因此,与'd
令牌相结合。我们得到了一个更加简洁优雅的句子。
/[a-z'd._+-]+@[a-z'd._-]+/gi
Demo
let input = 'sdabhikagathara@rediffmail.com, "assdsdf" <dsfassdfhsdfarkal@gmail.com>, "rodnsdfald ferdfnson" <rfernsdfson@gmail.com>, "Affdmdol Gondfgale" <gyfanamosl@gmail.com>, "truform techno" <pidfpinfg@truformdftechnoproducts.com>, "NiTsdfeSh ThIdfsKaRe" <nthfsskare@ysahoo.in>, "akasdfsh kasdfstla" <akashkatsdfsa@yahsdfsfoo.in>, "Bisdsdfamal Prakaasdsh" <bimsdaalprakash@live.com>,; "milisdfsfnd ansdfasdfnsftwar" <dfdmilifsd.ensfdfcogndfdfatia@gmail.com>'
function get_email(string) {
return string.match(/[a-z'd._+-]+@[a-z'd._-]+/gi)
};
$('#output').html(get_email(input).join('; '));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="output"></div>
- 现场观看@https://regex101.com/r/OveC5B/1/
相关文章:
- 使用正则表达式评估电子邮件地址时出现性能问题
- 根据部门用户的选择,接收来自多个电子邮件地址的Wordpress Contactform7查询
- 电子邮件地址验证但创建帐户,即使电子邮件地址无效
- 如何在实时网页中用mailto链接替换电子邮件地址
- 匹配Javascript中的几种不同的电子邮件地址格式
- 使用 Javascript 进行电子邮件地址验证在 ASP.net 中不起作用
- 使用不带正则表达式的jscript验证电子邮件地址
- ng变化不会'除非我输入了有效的电子邮件地址,否则我不会因为输入电子邮件而被解雇
- 使用JavaScript或JQuery验证电子邮件地址
- 如何防止电子邮件地址的css自动连字符
- 如何基于电子邮件地址域重定向到电子邮件登录页面
- 将多个电子邮件表单中的电子邮件发送到多个电子邮件地址
- 从url中提取电子邮件地址并将其添加到表单字段中
- JavaScript:提取电子邮件地址的部分并将其拆分为多个部分
- imacros:如何从.csv中提取的电子邮件地址中删除后缀(@gmail.com)
- 使用JavaScript从文本文件中提取电子邮件地址
- 如何使用javascript从电子邮件地址提取用户名?
- 提取电子邮件地址,但删除一些通知
- Google Apps脚本,用于从电子邮件正文中搜索和提取电子邮件地址并保存到spreadshet
- 使用jquery从批量文本中提取所有电子邮件地址