Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена по регулярному выражению. (https://javascript.ru/forum/misc/82122-zamena-po-regulyarnomu-vyrazheniyu.html)

voraa 16.03.2021 11:35

Замена по регулярному выражению.
 
Нужно в строке найти заданный шаблон (поиск только с начала слова) и заменить его на "[[шаблон]]'".
Пытаюсь делать так

const s=`
Зимний вечер.Зима наступила. Хорошо зимой. Зимовье
`
const sh='зим'

const re = new RegExp('[^а-яё]('+sh+')', 'ig')
const sr = s.replace(re, (p0, p1) => '[[' + p1 +']]')
console.log(sr)

Но проблема в том, что при замене пропадает символ перед [[, который хватается по [^а-яё]
Получается
[[Зим]]ний вечер[[Зим]]а наступила. Хорошо[[зим]]ой.[[Зим]]овье


Можно ли сделать регулярку, чтобы символ не пропадал?

voraa 16.03.2021 11:46

Все. Дошло.

Alexandroppolus 16.03.2021 11:48

var s=`
Зимний вечер.Зима наступила. Хорошо зимой. Зимовье
`
var sh='зим'

var re = new RegExp('([^a-яё])('+sh+')', 'ig')
var sr = s.replace(re, '$1[[$2]]')
console.log(re, sr)

рони 16.03.2021 12:00

:) :write:
var s=`
Зимний вечер.Зима наступила. Хорошо зимой. Зимовье
`
var sh='зим'

var re = new RegExp(`(?<=[^a-яё])${sh}`, 'ig')
var sr = s.replace(re, '[[$&]]')
console.log(re, sr)

voraa 16.03.2021 13:53

рони,
Спасибо.


Часовой пояс GMT +3, время: 05:45.