Javascript, поиск по нескольким словам и замена сами по себе. Замените только 1 из них в тексте, если они найдены

#javascript #replace #str-replace

#javascript #заменить #str-replace

Вопрос:

Мне нужно заменить несколько слов самостоятельно в тегах. Например

текст текст текст текст собака текст кошка текст текст мышь.

Необходимо заменить на <b>dog</b> или <b>cat</b> или <b>mouse</b> , если совпадают. Мне нужно было заменить его один раз. Если он найдет слово dog, это означает заменить единственную dog <b>dog</ b> . И ничего больше. Даже если кошка или мышь будут текстом.

У меня есть код.

 var str = "dog text cat text mouse",
    reg = /dog|cat|mouse/;
str = str.replace(reg, '<b>dog</b>').
 

Извините, это заменяет только любое из совпадающих с <b>dog</b> .
Помогите мне, пожалуйста.

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

1. Что должно dog dog dog стать? <b>dog</b> <b>dog</b> <b>dog</b> ?

Ответ №1:

Используйте g флаг, чтобы выполнить глобальный поиск, а не просто заменять первое вхождение.

Используйте круглые скобки в регулярном выражении, чтобы найти совпадение, и используйте $1 при замене, чтобы использовать то, что вы поймали.

 var str = "dog text cat text mouse";
var reg = /(dog|cat|mouse)/g;
str = str.replace(reg, '<b>$1</b>')