我需要替换所有大括号中的子字符串。例如,从这样的字符串:
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
如何做到?
答案 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
这是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