在Javascript中使用正则表达式一次替换多个字符串

 不完整的记忆721_560 发布于 2023-02-08 14:47

我试过这个:一次替换多个字符串 这个:javascript用数组全局替换它们如何不工作.

我可以这样做(它的PHP):

$a = array('a','o','e');
$b = array('1','2','3');
str_replace($a,$b,'stackoverflow');

结果将是:

st1ck2v3rfl2w

我想同时使用正则表达式.我怎样才能做到这一点 ?谢谢.

2 个回答
  • 一种可能的方案:

    var a = ['a','o','e'],
        b = ['1','2','3'];
    
    'stackoverflow'.replace(new RegExp(a.join('|'), 'g'), function(c) {
        return b[a.indexOf(c)];
    });
    

    根据@Stephen M. Harris的评论,这是另一个更加万无一失的解决方案:

    'stackoverflow'.replace(new RegExp(a.map(function(x) {
        return x.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
    }).join('|'), 'g'), function(c) {
        return b[a.indexOf(c)];
    });
    

    注意:检查方法的浏览器兼容性,indexOf并根据需要使用polyfill.

    2023-02-08 14:48 回答
  • var str = "I have a cat, a dog, and a goat.";
    var mapObj = {
       cat:"dog",
       dog:"goat",
       goat:"cat"
    };
    str = str.replace(/cat|dog|goat/gi, function(matched){
      return mapObj[matched];
    });
    

    检查小提琴

    2023-02-08 14:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有