如何使用正则表达式替换花括号中的所有子字符串?

时间:2018-11-16 20:23:38

标签: javascript regex

我需要替换所有大括号中的子字符串。例如,从这样的字符串:

let str = 'some text one some text one some text {one} some text';

我需要获取以下字符串:

str = 'some text two some text two some text {one} some text';

我尝试过:

console.log(str.replace(/one(?!\{one\})/g, 'two'));

但是得到了:

some text two some text two some text {two} some text

如何做到?

3 个答案:

答案 0 :(得分:6)

如果不是num_4{,请捕获字符前后的字符:

}

答案 1 :(得分:2)

匹配的基本版本是使用匹配的空格,开始或结束。这样,它也不会捕获“锥体”内部。这个问题尚不清楚。

(^|\s)one(\s|$)

let str = 'some text one some text one some text {one} some text';
str.replace(/(^|\s)one(\s|$)/gm, '$1two$2');
console.log(str);

在更复杂的文本中,您需要更多地考虑。例如。句号和逗号。

答案 2 :(得分:2)

将正则表达式更改为此,

(^|[^{])one(?!\})

并将其替换为$1two

Demo

这是javascipt示例代码,

let str = 'some text one some text one some text {one} some text';
console.log(str.replace(/(^|[^{])one(?!\})/g, '$1two'));

这将打印以下输出,

some text two some text two some text {one} some text