Как заменить последнее вхождение символов в строке с помощью javascript
У меня возникла проблема с поиском замены последнего ',' в строке с 'и':
С помощью этой строки:
test1, test2, test3
и я хочу закончить с:
test1, test2 и test3
Я пробую что-то вроде этого:
var dialog = 'test1, test2, test3';
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and ');
но он не работает
Ответы
Ответ 1
foo.replace(/,([^,]*)$/, ' and $1')
используйте привязку $
(конец строки), чтобы указать свою позицию, и найдите шаблон справа от индекса запятой, который не содержит никаких дальнейших запятых.
Редактировать:
Вышесказанное работает точно для определенных требований (хотя строка замены произвольно свободна), но на основе критики из комментариев ниже лучше отражает дух первоначального требования.
console.log(
'test1, test2, test3'.replace(/,\s([^,]+)$/, ' and $1')
)
Ответ 2
result = dialog.replace(/,\s(\w+)$/, " and $1");
$1
относится к первой группе захвата (\w+)
соответствия.
Ответ 3
шаблон поиска регулярных выражений \s ([^,] +) $
Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs sadXD sad , ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233
Поиск с помощью паттернов Линия1: whaterver4 Line3: 23233
Тем не менее, не найти Line2: sadXYZ! X
Что отсутствует пробелы