1

我正在做一个 REGEXP 工具,它接受文本输入并在 div 中显示结果。显示结果时,我用 <b>Match</b> 替换匹配项。如果它与原始文本匹配,则可以正常工作,但问题是插入 HTML 代码时

我想用 html 实体替换除 <b> 标记之外的所有标记,如何实现?

 var regExpTool = {
    makeRegexp: function(pattern, opts){
        var regexp = new RegExp(pattern, opts);
        return regexp;
    },
    createResults: function(pattern, string, opts){
        var res = string.replace(this.makeRegexp(pattern, opts), "<b>$&</b>")

        results.style.display = "block";
        text.style.display = "none";
        results.innerHTML = res;
  }
}
4

1 回答 1

0

也许您的代码应该看起来更像:

var win = window, doc = document, bod = doc.getElementsByTagName('body')[0];
function E(e){
  return doc.getElementById(e);
}
function regExpTool(text, outputElement){
  this.makeBold = function(options){
    outputElement.innerHTML = text.replace(new RegExp('^(<.+>)*('+text+')(<\/.+>)*$', options), '<b>$2</b>')
    outputElement.style.display = 'block';
   };
}

new regExpTool('<div>now</div>', E('wow')).makeBold();

makeRegexp请注意,您的方法没有理由。

这是http://jsfiddle.net/PHPglue/FjEdg/2/

它不适用于自闭合标签。

于 2013-08-01T01:17:39.747 回答