用html元素替换某些字符

时间:2015-06-30 00:54:54

标签: javascript regex string replace

我有一个这样的字符串:var text = "sdasd #ELEMENT1# asdasd #ELEMENT2#";我必须替换所有#ELEMENT-X#按钮,你会得到类似sdasd <button>ELEMENT1</button> asdasd <button>ELEMENT2</button>的内容。

我有一个小的正则表达式,它返回每个#

的索引数组
var regexp = /\#/g;
var match, matches = [];
while ((match = regexp.exec(text)) != null) {
    matches.push(match.index);
}
console.log(matches);

然后我尝试将#替换为#,如果#是奇数或偶数,但它没有像我预期的那样工作

var count=0;
var countPos=0;
var tempText='';
  for(var j=0; j<text.length; j++){
        for(var k=0; k<matches.length; k++){    
            if(j===matches[k]) {
                if(count%2 !== 0){
                    tempText = text.substr(countPos,j);
                    finalText += tempText.replace("%", '<button type="button" class="btn btn-default btn-xs fx-remove" data-var-token="[%XPTO%]" contenteditable="false">')
                }else{
                    tempText = text.substr(countPos,j);
                    finalText += tempText.replace("%","</button>");
                }
                finalText += text.substr(countPos,j);
                count++;

              countPos = j;
            }


        }
    }

       console.log('--------- '+finalText+' ---------------');

我的finalText会返回比原始文本更多的文本。

解决此问题的最佳方法是什么?

谢谢

1 个答案:

答案 0 :(得分:3)

您可以使用

var text = "sdasd #ELEMENT1# asdasd #ELEMENT2#";

text = text.replace(/#(.*?)#/g, '<button>$1</button>');
snippet.log(text)
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>