【问题标题】:Match an email address which is before a specific word匹配特定单词之前的电子邮件地址
【发布时间】:2012-07-04 19:22:11
【问题描述】:

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

非常感谢您的帮助!

【问题讨论】:

  • 你可以用;分割你的email字符串并用findString(initials)过滤每个元素
  • @loldop,谢谢,但我认为这不是一个好主意。
  • 您的示例不代表您为什么要使用正则表达式。每个(邮件和首字母)之间有分隔符吗?你可能想用你的字符串制作一个哈希数组
  • @loldop。事实上,我想找到与给定首字母对应的电子邮件。正如我所说,如果我有 (A,B),我想收到 aaa@bbb.com 电子邮件

标签: javascript regex email-validation


【解决方案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

【讨论】:

  • 谢谢谢谢谢谢! ! ! ! !太好了,我从 3 天开始就在尝试实现这一点。很好的答案。
【解决方案2】:

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

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

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

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

【讨论】:

  • 谢谢劳尔,但在我的情况下问题有所不同。事实上,我知道姓名的首字母缩写,而且我想在之前收到电子邮件。首字母总是在电子邮件地址的末尾,前面有一个空格。
猜你喜欢
  • 2016-03-20
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多