JS c помощью regexp найти в json ключ и изменить его значение

Столкнулся с задачей - нужно регуляркой найти в json пару "name" : "oldName" и заменить "oldName" на "newName"

Придумал пока только так: data.replace( /"name":\s".*"/g, '"name": "newName"' );

Но по условию нужно изменить только "oldName", все остальное только помогает найти, что менять Вместо oldName может быть любой текст

Кто может подкинуть идею?


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Используйте

data = data.replace(/("name"\s*:\s*")[^"]*/g, '$1newName'); 
  • ("name"\s*:\s*") - Подмаска №1: "name", 0+ пробельных символов, :, 0+ пробельных символов, "
  • [^"]* - ноль и более символов ".

См. пример работы регулярного выражения.

Пример работы кода:

let data = '"name" : "oldName"';
data = data.replace(/("name"\s*:\s*")[^"]*/g, '$1newName'); 
console.log(data);

→ Ссылка