Сначала вы можете написать свою существующую функцию следующим образом:
function emboldenMatch(string, query) {
return string.replace(query, "<strong>$&</strong>")
}
console.log(em('some string with bold text', 'bold'));
Если вы хотите обернуть каждый матч, а не только первый, и быть нечувствительным, вы можете сделать его regexp
и добавить g
( = глобальный) флаг и i
(= нечувствительный) флаг:
function emboldenMatch(string, query) {
return string.replace(new RegExp(escapeRegExp(query), 'gi'), "<strong>$&</strong>")
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
console.log(emboldenMatch('some string with bold bold text', 'bold'));
Теперь, если вы хотите добавить дополнительные пробелы между символами, вы можете добавить его в регулярное выражение следующим образом:
function emboldenMatch(string, query) {
var reg = new RegExp(escapeRegExp(query).split('').join('\\s*'), 'gi');
return string.replace(reg, "<strong>$&</strong>")
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
console.log(emboldenMatch('some string with bo ld b old text', 'bold'));