【问题标题】:Strip contact information from email从电子邮件中删除联系信息
【发布时间】:2015-06-11 16:29:56
【问题描述】:

我有时让用户输入如下电子邮件:

John Smith <john@example.org>

我有一个像 /(.+[ <>])/g 这样的正则表达式,但这不正确。

我想要一个类似的输出:

john@example.org

我只想要电子邮件组件,并且想忽略用户可能提供的任何其他内容。

编辑:人们开始感到困惑。我只是希望输入与输出一样。这与验证无关。我已经有验证了。这与在验证之前清理输入有关。

【问题讨论】:

  • 请详细说明您的问题。目前尚不清楚您要做什么。
  • @CD.. 我不想验证电子邮件。你读过这个问题吗?
  • @spectacularbob 输入的电子邮件地址被隐藏了,我已经把它放在代码标签中,现在应该更有意义了。
  • 我建议使用解析器。 this to get started(尤其是 cmets)怎么样?
  • @bishop 我有一个像John Smith <john@example.org> 这样的输入,我想删除不是电子邮件的任何内容。所以那个字符串应该变成john@example.org

标签: javascript regex


【解决方案1】:

假设您输入的电子邮件始终有一个“@”符号,您可以选择您的电子邮件使用您希望接受的符号生成的单个标记。 例如:

[A-Za-z0-9.]*?@[A-Za-z0-9.]*

test test test john smith@hotmail.com test

会导致

smith@hotmail.com

电子邮件可以包含破折号和下划线 (john-smith@hotmail.com),因此请考虑将它们添加到 [A-Za-z0-9.] 字符类中,使其成为 [A-Za-z0-9.\-_],或任何您认为合适的字符。

【讨论】:

  • 谢谢,这正是我要找的东西!
【解决方案2】:

也许这会起作用,但您可能需要根据您希望在电子邮件地址中允许的字符进行一些修改

<(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3})>

【讨论】:

    【解决方案3】:

    这样的?

    /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
    

    【讨论】:

      【解决方案4】:

      单线:

      var str = "John Smith <john@example.org>",
      mail = /[^<>]+/g.exec(/<.+>/g.exec(str))[0];
      

      【讨论】:

        猜你喜欢
        • 2015-08-08
        • 1970-01-01
        • 2018-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-20
        相关资源
        最近更新 更多