首页 > 解决方案 > 正则表达式忽略电子邮件中的某些字符

问题描述

我需要您的帮助来使用正则表达式提取正确的电子邮件。这是一个原始的 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

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

谢谢

标签: regexemailportia

解决方案


我没有完全理解您的问题,但无论如何都可以回答:使用正则表达式替换捕获组,如下面的 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);


推荐阅读