我"[TITLE] [STORENAME] [DYNAMIC]".replace(regex, `$1|${replace}=${value}]`);多次使用,但每次在使用之前,我都会更改变量replace。查看完整代码:
obj = {} || obj;
const replace = 'prefix';
let search = 'TITLE';
const value = 'MY VALUE';
const regex = new RegExp(`(\\[${search}(?:\\|[^\\][]*)?)]`, 'gi');
obj.str = "[TITLE] [STORENAME] [DYNAMIC]".replace(regex, `$1|${replace}=${value}]`);
search = 'STORENAME';
obj.str = "[TITLE] [STORENAME] [DYNAMIC]".replace(regex, `$1|${replace}=${value}]`);
search = 'DYNAMIC';
obj.str = "[TITLE] [STORENAME] [DYNAMIC]".replace(regex, `$1|${replace}=${value}]`);
console.log(obj.str);
所以如你所见,我得到了结果[TITLE|prefix=MY VALUE] [STORENAME] [DYNAMIC],但目标是得到这个结果:[TITLE|prefix=MY VALUE] [STORENAME|prefix=MY VALUE] [DYNAMIC|prefix=MY VALUE].
可能是因为我replace()再次使用相同的字符串,但我也尝试过这种方式:
obj = {} || obj;
obj.str = '[TITLE] [STORENAME] [DYNAMIC]';
const replace = 'prefix';
let search = 'TITLE';
const value = 'MY VALUE';
const regex = new RegExp(`(\\[${search}(?:\\|[^\\][]*)?)]`, 'gi');
obj.str = obj.str.replace(regex, `$1|${replace}=${value}]`);
search = 'STORENAME';
obj.str = obj.str.replace(regex, `$1|${replace}=${value}]`);
search = 'DYNAMIC';
obj.str = obj.str.replace(regex, `$1|${replace}=${value}]`);
console.log(obj.str);
但输出仍然不正确。