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

时间:2012-07-04 09:45:43

标签: 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)";

我想在缩写值之前只收到电子邮件;

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

非常感谢你的帮助!

2 个答案:

答案 0 :(得分: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

测试此代码here

答案 1 :(得分:-1)

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

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

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

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