Замена динамического значения между динамическими символами в Javascript

#javascript #regex #string

#javascript #регулярное выражение #строка

Вопрос:

У меня есть строка между такими символами:

 new/set/25/
type/22/set/3/
aa/23/mine/set/9/yous
set/34
/dol/22/mmm/sss/set/23
 

он имеет шаблон значений, подобный этому:

 set/{n}
 

я попытался заменить {n} значение с помощью этой функции:

 var pathname = 'new/set/9/'   
pathName = pathName.replace(/(///gset///g)([0-9] )/, '$1'   '5';
//expected result = new/set/5/
 

но это не работает

Ответ №1:

Вы можете использовать String.prototype.match метод для замены всех значений в скобках на любой другой результат, например, приведенный ниже

 let pattern = /set/(d )/?/;

let chaines = [
  "new/set/25/",
  "type/22/set/3/",
  "aa/23/mine/set/9/yous",
  "set/34",
  "dol/22/mmm/sss/set/23"
];

chaines.map(c => {
  let matches = c.match(pattern);
  console.log(c.replace(matches[1], 5));
}); 

Ответ №2:

Попробуйте это.

 let pathname = `uid/22/new/set/203/key/90`;
pathname = pathname.replace(/(?<=set/)d (?=/)/g, 5);

console.log(pathname); 

Комментарии:

1. как это сделать с помощью функции replace, потому что я планирую поместить эту строку ‘new / set /{n}’ в URL

2. @Padawan спасибо за вашу ссылку, однако, когда у меня есть такая строка: uid/22/new/set/203/key/90 она станет uid/5/new/set/5/key/90 вместо uid/22/new/set/5/key/90

Ответ №3:

Попробуйте это регулярное выражение paterrn (?<=set/)d (?=/)

ДЕМОНСТРАЦИЯ

 console.log('uid/22/new/set/203/key/90'.replace(/(?<=set/)d (?=/)/g,'78')) 

Комментарии:

1. спасибо за ваш ответ, что, если строка внутри динамического URL, например, если у меня есть такая строка uid/22/new/set/203/key/90