为每个RegExp匹配添加CSS

时间:2013-11-18 12:13:52

标签: javascript jquery css regex

我需要检测一些随机正则表达式,然后将它们应用于每个表达式,例如:

  • Match[0]替换为<span class='found'> Match[0]</span>
  • Match[1]替换为<span class='found'> Match[1]</span>
  • Match[n]替换为<span class='found'> Match[n]</span>

我试过这个

.replace(randomregexp, "<span class='found'>$1</span>");

但不显示Match[0],而是显示$1

我的代码:

 $("#query, article").keyup(
            function change() {
                if (document.getElementById("query").value == "");
                else {
                    texts = document.getElementById("query").value;
                    regexpr= new RegExp(texts,"g"); 
                    document.getElementsByTagName("article")[0].innerHTML = $("article").text().replace(regexpr, '<b class="found">$1</b>'); 
                }
            }
        );

3 个答案:

答案 0 :(得分:0)

如果您可以发布模式代码,那么会有所帮助,但请尝试.wrap('<span class="found"></span>)

答案 1 :(得分:0)

您需要使用wrap功能。尝试这样的事情:

.wrap('<span class="found"></span>')

或者您可以使用$&来访问匹配的字符串,如下所示:

.replace(randomregexp, "<span class='found'>$&</span>");

答案 2 :(得分:0)

确保将您的匹配包装在()中。如果没有匹配的文字,则只显示$1

texts = '('+document.getElementById("query").value+')';

那么$ 1应该适用于匹配的子串......

'hello'.replace(/(\w+)/,"<span class='found'>$1</span>") 
// Outputs: "<span class='found'>hello</span>"