RegExp用于* | TEST | *的所有匹配

时间:2017-10-25 19:48:14

标签: javascript regex

我有一个包含模式*|TEST|*的合并标记的字符串我需要用HURRAY替换所有这些标记。

我的代码替换了字符串中的第一个匹配,但其余的则没有。我试图了解如何使用RegExp进行匹配以替换字符串中的所有匹配项。

const content = "*|TEST|* something else *|TEST|*";
const str = "TEST";

console.log(content.replace(`\*\|${str}\|\*`, "HURRAY"));

上述代码: https://jsfiddle.net/fhrz7w0j/

2 个答案:

答案 0 :(得分:1)

在正则表达式中,您可以使用/g标志来获取某个字符串的所有匹配项。你在最后一个斜线之后设置它。

例如,/myregex/g匹配字符串中的所有myregex。在您的情况下,/\*\|TEST\|\*/g将匹配所有实例,或使用RegExp构造函数

new RegExp(`\\*\\|${str}\\|\\*`, "g")

答案 1 :(得分:0)

使用正则表达式,使用'g'修饰符(指示正则表达式在第一次匹配后继续查看)。

const content = "*|TEST|* something else *|TEST|*";
const str = "TEST";

console.log(content.replace(/\*\|(\w+)\|\*/g, "HURRAY"));