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

Javascript 匹配特定单词前的电子邮件地址,javascript,regex,email-validation,Javascript,Regex,Email Validation,我有一个正则表达式来匹配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)

我有一个正则表达式来匹配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电子邮件地址


非常感谢你的帮助

你是否有这样的东西“example@mail.com(A,B)“或类似的”(A,B)example@mail.com“,您所要做的就是拥有唯一捕获字母的第一部分和最后一部分。因此,对于正则表达式的捕获,应该自动排除(A,B)

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

var regexresult=str.replace("(A,B)","");
如果字符串存在,该代码将删除该字符串,否则它将不起任何作用。

JavaScript:

输出:


测试此代码。

谢谢Raul,但问题与我的情况不同。事实上,我知道名字的首字母,我想在收到之前收到电子邮件。标题始终位于电子邮件地址的末尾,前面有一个空格。您可以按
拆分您的
电子邮件
字符串
并使用
findString(缩写)
@loldop过滤每个元素,谢谢,但我认为在我的情况下这不是一个好主意。您的示例并不能说明为什么要使用正则表达式。每个(邮件和首字母)之间有分隔符吗?你可能想用你自己做一个散列数组string@loldop. 事实上,我想找到与给定首字母相对应的电子邮件。正如我所说,如果我有(A,B),我想得到aaa@bbb.com电子邮件谢谢,谢谢,谢谢!太好了,我从3天开始就在努力实现这一点。回答得很好。
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