使用变量替换所有特定字符串

时间:2016-11-28 14:39:12

标签: javascript

如何在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>个。

1 个答案:

答案 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