javascript - 替换集合中的单个符号

标签 javascript regex

JavaScript + Reg-Ex 中是否有一种简化的方法可以用其替代符号替换集合中每个符号的所有出现?

示例:

"Test: 1, 2, 3 and 1".replace("123", "ABC");
// we need to get: "Test: A, B, C and A";

我的意思是,是否有任何 Reg-Ex 技巧可以避免这里出现 for 循环?无论如何,最有效的方法是什么?

规定:

  1. 在我的任务中,符号集通常非常短(甚至可能是 3 个符号),并且是静态的,而不是动态的,与所示的示例非常相似。
  2. 有时需要将符号替换为空“”,即删除。

最佳答案

您可以使用对象文字构建您的替代品。

var map = {'1':'A', '2':'B', '3':'C'};
str = str.replace(/[123]/g, function(k) {
    return map[k];
});

或者使用 map 创建自定义函数:

function _replace(str, map) {
   var re = new RegExp('['+Object.keys(map).join('')+']','g');
   return str.replace(re, function(x) { return map[x] });
}

关于javascript - 替换集合中的单个符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29586914/

相关文章:

javascript - 如何使 href 与 ng-click 中的函数结果一起使用?

javascript - 获取 div 之外的下一个没有 id 的文本区域

javascript - 了解 $resource 工厂和 @ 前缀

javascript - 类型定义文件

javascript - 当用户在 Angular 中使用正则表达式仅输入 0 或 0.0 时如何显示错误消息?

Python 正则表达式 * 仅匹配字符串开头的出现次数

javascript - 当文本框输入为空时显示警报

regex - 检查字符串是否至少包含 10 个数字、12 个大写字母和 20 个小写字母

php - 让 PHP 停止替换 $_GET 或 $_POST 数组中的 '.' 个字符?

javascript - 使用属性等于选择器时转义元素名称中的方括号