匹配特定单词之前的电子邮件地址

Match an email address which is before a specific word

本文关键字:电子邮件地址 单词之      更新时间:2023-09-26

我有一个正则表达式来匹配javascript中的电子邮件地址。让我们看一个例子:

var email  = "aaa@bbb.com (A,B); ccc@ddd.com (C,D); eee@fff.com (E,F);";
var emails = email.match(/([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+'.[a-zA-Z0-9._-]+)/gi);

这将返回我 var 电子邮件中的所有电子邮件。

现在,我有一个字符串:

var initials = "(A,B)";

我只想在首字母值之前收到电子邮件;

如果var首字母是"(A,B)",那么我只想获取 aaa@bbb.com 电子邮件地址。

非常感谢您的帮助!

JavaScript:

var input = "aaa@bbb.com (A,B); ccc@ddd.com (C,D); eee@fff.com (E,F);";
var initials = "(A,B)";
var email = input.match(new RegExp("([a-zA-Z0-9]+(?:[-._][a-zA-Z0-9]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*)(?=''s*" + initials.replace(/([()])/g, "''$1") + ")"))[0];
print(email);

输出:

aaa@bbb.com

在此处测试此代码。

无论你有这样的"example@mail.com(A,B)"还是像这样的"(A,B)example@mail.com",你所要做的就是拥有唯一捕获字母的第一部分和最后一部分。因此,应自动排除 (A,B) 以捕获正则表达式。

如果这不是问题所在,您可以随时获取正则表达式返回的文本并使用 replace 将 (A,B) 更改为空,如下所示:

var regexresult=str.replace("(A,B)","");

该代码将删除字符串(如果存在),否则它将不执行任何操作。