我想知道正则表达式是否能够从以下字符串中提取电子邮件?
以下条件是.*@.*
与所有字符串匹配。对于某些字符串,我的模式是有效的,但其余部分则不然。
我希望匹配所有匹配电子邮件模式的字符串包括所有域名(some-url.com)或(some-url.co.id)
boleh di kirim ke email saya ekoprasetyo.crb@outlook.com tks...
boleh minta kirim ke db.maulana@gmail.com.
dee.wien@yahoo.com. .
deninainggolan@yahoo.co.id Senior Quantity Surveyor
Fajar.rohita@hotmail.com, terimakasih bu Cindy Hartanto
firmansyah1404@gmail.com saya mau dong bu cindy
fransiscajw@gmail.com
Hi Cindy ...pls share the Salary guide to donny_tri_wardono@yahoo.co.id thank a
答案 0 :(得分:22)
您可以使用正则表达式/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/
创建一个函数,以便从长文本中提取电子邮件ID:
function extractEmails ( text ){
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi);
}
脚本运行:运行以查看结果
var text = `boleh di kirim ke email saya ekoprasetyo.crb@outlook.com tks... boleh minta kirim ke db.maulana@gmail.com. dee.wien@yahoo.com. .
deninainggolan@yahoo.co.id Senior Quantity Surveyor
Fajar.rohita@hotmail.com, terimakasih bu Cindy Hartanto
firmansyah1404@gmail.com saya mau dong bu cindy
fransiscajw@gmail.com
Hi Cindy ...pls share the Salary guide to donny_tri_wardono@yahoo.co.id thank a`;
function extractEmails ( text ){
return text.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi);
}
$("#emails").text(extractEmails(text));

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p id="emails"></p>
&#13;
答案 1 :(得分:4)
[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+
为我工作,你可以查看regex101 saved regex上的结果。
它实际上只是由@
符号分隔的相同模式的两倍。
该模式是1次或更多次出现:
a-z
:任何小写字母A-Z
:任何大写字母0-9
:任何数字-_.
:连字符,下划线或点如果它遗漏了一些电子邮件,请添加任何丢失的字符,它应该可以解决问题。
修改强>
我没有先注意到它,但是当转到regex101 link时,屏幕右上角有一个说明部分,说明了什么正则表达式匹配。
答案 2 :(得分:2)
我想添加到@Ambrish Pathak的答案中,
根据wikipedia,电子邮件地址也可以接受+号
([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)
将像魅力一样工作
答案 3 :(得分:1)
您可以使用以下 regex 来捕获所有电子邮件地址。
(?<name>[\w.]+)\@(?<domain>\w+\.\w+)(\.\w+)?
另外,如果您愿意,您只能捕获包含特定域名(即some-url.com)的电子邮件,并且要实现这一点,您只需要替换{{1}在\w+\.\w+
之后添加您想要的域名。所以,它就像<domain>
答案 4 :(得分:1)
\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}+\.[A-Z]{2,}
答案 5 :(得分:0)
答案 6 :(得分:0)
嗨,这个正则表达式不适用于我……
let items1 = document.querySelectorAll('h1');
items1.forEach((item) => {
let pattern = (/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)/gi)
if (item.innerHTML.match(pattern)) {
results.push({
emailId: item.innerHTML
});
}
});
这是我从中获取文本的标签...只是一个
<h1>"dasd xyz@gmail.com asdas asdsad asdasd"</h1>
这是我得到的对象输出。
[
{ emailId: 'sadasdsa br@gmail.com' },
{ emailId: 'sadasd br2@gmail.com' },
{ emailId: '"asgdb@gmail.com"' },
{ emailId: '"dasd xyz@gmail.com asdas"' },
{ emailId: 'asgdb@gmail.com' }
]