正则表达式从字符串中提取电子邮件

Cig*_*tor 8 regex

我想知道正则表达式是否能够从以下字符串中提取电子邮件?

以下条件.*@.*与所有字符串匹配.对于某些字符串,我的模式是有效的,但其余部分则不然.

我想匹配所有匹配电子邮件模式的字符串包括所有域名(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
Run Code Online (Sandbox Code Playgroud)

Amb*_*hak 34

您可以使用正则表达式创建函数以/([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);
    }
Run Code Online (Sandbox Code Playgroud)

实际操作脚本:运行以查看结果

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));
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<p id="emails"></p>
Run Code Online (Sandbox Code Playgroud)

  • 好吧,实际上答案中的正则表达式也捕获了`my_email@...com` 以避免这种情况,修改正则表达式如下:`([a-zA-Z0-9._-]+@([a-zA- Z0-9_-]+\.)+[a-zA-Z0-9_-]+)` (2认同)
  • 只是为了学习:如果使用 i(不区分大小写)标志,为什么需要 AZ 部分? (2认同)

Mic*_*iey 7

[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+为我工作,您可以在这个regex101 保存的 regex上检查结果。

它实际上只是由@符号分隔的相同模式的两倍。

该模式是 1 次或多次出现:

  • a-z: 任何小写字母
  • A-Z: 任何大写字母
  • 0-9: 任何数字
  • -_.: 连字符、下划线或点

如果它错过了一些电子邮件,向它添加任何缺失的字符,它应该可以解决问题。

编辑

我一开始没有注意到,但是当转到regex101 链接时,屏幕右上角有一个解释部分,解释正则表达式匹配的内容。

  • 您好,感谢分享!我已经更新了您的演示,以定义电子邮件只能以字母结尾:) `[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+[a- zA-Z]` (2认同)
  • `+` 符号在`@` 之前的电子邮件地址中有效。这不包括那个。 (2认同)

San*_*iva 5

我想补充@Ambrish Pathak的答案,

根据维基百科,电子邮件地址也可以接受+签名

([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9_-]+)
Run Code Online (Sandbox Code Playgroud)

会像魅力一样运作