Ответ 1
Используйте $&
, а не $0
для обозначения всего совпадения. Я обвиняю Perl.
Я выделяю экземпляры строки поиска в наборе текста. Я хочу сохранить случай исходного текста при замене нечувствительного к регистру совпадения запроса. Вот что я начал с:
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>'; });
Я не большой поклонник того, как это выглядит. Как вы порекомендовали бы выполнять эту замену строк?
Используйте $&
, а не $0
для обозначения всего совпадения. Я обвиняю Perl.
используйте $$ 0 вместо $0
str.replace(/\$/,'$$')