如何在正则表达式中使用变量?

时间:2015-07-16 19:08:58

标签: javascript jquery regex

我正在通过一系列单词循环,并希望使用Ben Alman的替换文本库(http://benalman.com/projects/jquery-replacetext-plugin/)来查找匹配并使它们变为红色。这就是我现在所拥有的,但我对正则表达式知之甚少,并希望在如何从单词数组中创建正则表达式方面提供一些帮助。

  var words = ['word1', 'word2','word3','word4','word5'];
  function colorize( str ) {
      return '<span class="red">' + str + '<\/span>';
    };

    $.each(words, function(i, val){
         var re = new RegExp("not sure what goes here","g"); 
        $('#editor').replaceText(re,colorize );
    });

试试这个并不起作用:

$.each(words, function(i, val){
       var re = new RegExp("/\b" + val + "\b","gi");
      $('#editor').replaceText(re,colorize );
    });

2 个答案:

答案 0 :(得分:0)

从文档中,我相信您需要做的就是:

$("#editor").replaceText(/oldText/gi, "newText");

答案 1 :(得分:-1)

你甚至不需要循环。你可以这样做:

var words = [...];
function colorize( str ) { ... }

var re = new RegExp("\\b(" + words.join("|") + ")\\b","gi");
$('#editor').replaceText(re,colorize );

(注意第二个参数中的i,这会给出您在评论中提到的不区分大小写的情况)