如何在replace
函数中使用动态变量作为第一个参数?
我有这个代码搜索用户指定的字符串:
var query = jQuery.trim(jQuery(this).val()).toLowerCase();
console.log(query + ' was searched')
jQuery('.one-reference').each(function () {
var jQuerythis = jQuery(this);
if (jQuerythis.text().toLowerCase().indexOf(query) === -1) {
jQuerythis.fadeOut();
}
else {
jQuerythis.html(jQuerythis.html().replace(/&/g, '<strong>$&</strong>'));
jQuerythis.fadeIn();
}
});
此replace(/&/g, '<strong>$&</strong>'))
无效。
我想用query
个标签包装所有<strong>
个。
答案 0 :(得分:3)
当您在html中搜索任意值时,您需要创建一个RegExp
对象并在replace
中使用该对象。
if (jQuerythis.text().toLowerCase().indexOf(query) === -1) {
jQuerythis.fadeOut();
} else {
var queryReg = new RegExp(query, 'g');
jQuerythis.html(jQuerythis.html().replace(queryReg, '<strong>$&</strong>'));
jQuerythis.fadeIn();
}
此外,您首先需要转义(\
)查询变量中任何在正则表达式中具有特殊含义的字符(例如^$[]+()\/-
) -
query = query.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
(来自MDN)
有关正则表达式的更深入讨论,请参阅Regular Expressions at Mozilla Developer Network。