【问题标题】:Regex to disregard certain characters in an email正则表达式忽略电子邮件中的某些字符
【发布时间】:2018-06-07 01:13:58
【问题描述】:

我需要您的帮助来使用正则表达式提取正确的电子邮件。 这是一个原始的 HTML:

  </a>
  <script>
      var XutJPVbvZ = 'sales@some##thing.com';
      var XutJPVbvZ = XutJPVbvZ.split('#');
      document.getElementById('XutJPVbvZ').innerHTML = 
           XutJPVbvZ[0]+XutJPVbvZ[2]+XutJPVbvZ[1]; 
      document.getElementById('XutJPVbvZ').href = 
           'mailto:'+XutJPVbvZ[0]+XutJPVbvZ[2]+XutJPVbvZ[1];
  </script>
</div>

我用这个表达式匹配一封电子邮件:

[a-zA-Z0-9-_.]+@[a-zA-Z0-9-_.]+[a-zA-Z]+[a-zA-Z0-9-_.]+

我得到的是:sales@some##thing.com

如何使正则表达式返回一封电子邮件,该电子邮件地址中间没有两个 # 特殊字符?

谢谢

【问题讨论】:

  • 您是要仍然匹配电子邮件但去掉“#”字符,还是只匹配有效的电子邮件?
  • 是的,我想匹配电子邮件,但要去掉“#”字符
  • 听起来你必须在与正则表达式匹配后对字符串进行搜索和替换......除非你想玩匹配组(即使那样你仍然需要后处理将这些组重新组合在一起)
  • @swalladge 我不能这样做,因为这是抓取的 html...我正在将其导出为 csv,所以也许我可以在此之后执行此操作,但如果我能做到,那就太好了报废时的表达......
  • 如果您详细说明您在问题中使用的工具可能会有所帮助。 :)

标签: regex email portia


【解决方案1】:

我没有完全理解您的问题,但无论如何都可以回答:使用正则表达式替换捕获组,如下面的 Javascript 代码所示:

const regex = /([a-zA-Z0-9-_.]+)@([a-zA-Z0-9-_.]+)\#\#([a-zA-Z]+)([a-zA-Z0-9-_.]+)/gm;
const str = `sales@some##thing.com`;
const subst = `$1@$2$3$4`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多