当前位置: 首页 > 知识库问答 >
问题:

regex -多次替换[重复]的更短方式

葛雪松
2023-03-14
var str = "~lorem ~lorem1 ~ipsum ~ipsum2 ~dolor ~dolor3";
str = str.replace(/~lorem/g, 'a');
str = str.replace(/~ipsum/g, 'b');
str = str.replace(/~dolor/g, 'c');
console.log(str);  // a a1 b b2 c c3
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

如何一次执行所有的< code>str.replace?

共有2个答案

汪晨
2023-03-14

您可以按如下方式组合正则表达式

/(~洛雷姆)|(~同上)|(~多洛尔)/克

然后,您需要使用函数作为要替换的第二个参数,以将“a”,“b”和“c”设置为找到的文本的替换

易俊友
2023-03-14

您可以获取一个对象并从键构建正则表达式。

要用值替换,您需要一个函数,该函数采用找到的字符串并从对象中获取值。

如果字符串包含特殊字符,您也需要转义它们。

var str = "~lorem ~lorem1 ~ipsum ~ipsum2 ~dolor ~dolor3",
    values = { '~lorem': 'a', '~ipsum': 'b', '~dolor': 'c' };

str = str.replace(new RegExp(Object.keys(values).join('|'), 'g'), k => values[k]);

console.log(str);  // a a1 b b2 c c3
 类似资料:
  • 问题内容: 我有这个字符串: 正在做: 似乎只删除了上面字符串中的第一个匹配项。 如何替换 所有 出现的内容? 问题答案: 注意:请勿在对性能有要求的代码中使用此代码。 作为简单文字字符串的正则表达式的替代方法,您可以使用 一般模式是 在某些情况下,它过去比使用和正则表达式要快,但是在现代浏览器中,情况似乎不再如此。 结论:如果您有性能至关重要的用例(例如,处理数百个字符串),请使用Regexp方

  • 我想将正则表达式和两个单词之间的结果传输到数组中,但不幸的是我不能这样做。你能帮我吗? 在这篇文章中 我将搜索此内容, 基于此,我写了这样一个正则表达式 然而,这样,它需要整体,而不是一块一块。 先谢谢你的帮助。

  • 我有字符串和一组regex规则: 变为 变为 ... 如何替换多个regex匹配,而不在最后消化结果,以便最终结果为?

  • null 但问题是我的regex不是。

  • 我正在尝试使用正则表达式替换单词。但不管用。 我试图只替换有一个点的单词(.)

  • 字符串方法有什么区别? 在下面的示例中,代码给出了< code >相同的输出。在这两种情况下,字符串的< code >所有实例都会被替换。 输出: 这里有一只狗,那里有一只 输出: 这里有一只狗,那里有一只