【问题标题】:Node.js: Regular Expression to read email from stringNode.js:从字符串读取电子邮件的正则表达式
【发布时间】:2011-08-20 10:22:23
【问题描述】:

如何获取"XXX <email@email.com>" 的电子邮件地址?我不想得到“”。

谢谢!

【问题讨论】:

  • 您能否提供一个更好的示例来说明您正在使用的输入类型以及您所说的“”是什么意思?
  • 输入在字符串内。当您收到一封电子邮件时:“First Last ”。我想知道是哪封邮件。

标签: javascript node.js


【解决方案1】:

如果我对您的理解正确,则不肯定。如果您想获取电子邮件域,即 gmail.com 或 hotmail.com,那么您可以使用

var x =string.indexOf("@");  var y =string.subString(x)

这将为您提供字符串 y 作为电子邮件域。

【讨论】:

    【解决方案2】:
    function getEmailsFromString(input) {
        var ret = [];
        var email = /\"([^\"]+)\"\s+\<([^\>]+)\>/g;    
        var match;
    
        while ( match = email.exec(input) ) {
            ret.push({'name': match[1], 'email': match[2]});
        }    
    
        return ret;
    }
    
    var str = '"Name one" <foo@domain.com>, ..., "And so on" <andsoon@gmx.net>';
    var emails = getEmailsFromString(str);
    

    信用:How to find out emails and names out of a string in javascript

    【讨论】:

      【解决方案3】:

      要抓住尖括号内的内容,您可以使用以下内容:

      var pattern = /<(.*)>/;
      pattern.exec("XXX <foo@bar.com>"); // this returns ["<foo@bar.com>", "foo@bar.com"]
      

      【讨论】:

        【解决方案4】:

        此正则表达式适用于您的示例。

        /<([^>]+)/
        

        它会搜索 '' 的任何内容,并在您的匹配项中返回。

        【讨论】:

          【解决方案5】:

          这是一个基于 Tejs 的回答。简单易懂,我觉得更优雅一点

          // Split on < or >
          var parts = "XXX <email@email.com>".split(/[<>]/);
          var name = parts[0], email = parts[1];
          

          【讨论】:

            【解决方案6】:
            ^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,3})|(aero|coop|info|museum|name))$
            

            匹配电子邮件地址,包括一些较新的顶级域扩展,例如信息、博物馆、姓名等。还允许电子邮件直接绑定到 IP 地址。

            【讨论】:

            • 这甚至可能有效,但对我来说它看起来像希腊语。答案应该总是有某种解释。
            • 这比被要求的要多得多,我认为它比帮助更令人困惑。这是用于电子邮件验证,而不是从用户提供的字符串中删除电子邮件。
            【解决方案7】:

            真的很简单(不需要正则表达式!)

            var components = emailAddress.split('<')
            
            if(components.length > 1)
            {
                var emailAddress = components[1].replace('>', '');
            }
            

            【讨论】:

              猜你喜欢
              • 2017-07-13
              • 2011-07-01
              • 2011-09-10
              • 1970-01-01
              • 1970-01-01
              • 2013-04-09
              • 2013-02-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多