4

我有一个正则表达式来匹配 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 emails 中的所有电子邮件返回给我。

现在,我有一个字符串:

var initials = "(A,B)";

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

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

非常感谢您的帮助!

4

2 回答 2

1

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

在此处测试此代码。

于 2012-07-04T11:16:07.520 回答
-1

无论您有类似“example@mail.com(A,B)”还是类似“(A,B)example@mail.com”,您所要做的就是获取唯一捕获的第一部分和最后一部分字母。所以 (A,B) 应该被自动排除,因为他捕获了正则表达式。

如果这不是问题,您可以随时获取正则表达式返回的文本并使用替换将 (A,B) 更改为空,就像这样:

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

如果字符串存在,该代码将删除该字符串,否则它什么也不做。

于 2012-07-04T09:52:32.137 回答