Я выделяю экземпляры строки поиска в наборе текста.Я хочу сохранить регистр исходного текста при замене регистрозависимого соответствия запроса.Вот с чего я начал:
text.replace(new RegExp('(' + query + ')', 'ig'), '<em>$1</em>');
В этом случае мне нужно было бы экранировать query
, чтобы не допустить нарушения скобок в скобках, поэтому я решил попробовать:
text.replace(new RegExp(query, 'ig'), '<em>$0</em>');
Но $0
, похоже, не используется - все совпадающие строки заменяются на $ 0.Однако я нашел альтернативу:
text.replace(new RegExp(query, 'ig'), function(match) { return '<em>' + match + '</em>'; });
Хотя я не большой поклонник того, как это выглядит.Как бы вы порекомендовали сделать этот тип замены строки?