#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