我必须替换html中的所有特殊字符,并且我创建了一个特殊字符数组,其中包含特殊字符和类名的键值对。 但这不起作用。我试过,以下是代码和小提琴链接。
var SpClass = new Array();
SpClass["&"] = "ampClass";
function temp() {
var str = "";
var tempLen = SpClass.length;
var k = 0;
var htmlForRemoveChar = $("#test").html();
for (var splChar in SpClass) {
if (k > tempLen) {
$("#test").html(htmlForRemoveChar);
}
var tempChar = "/" + splChar + "/g";
alert(htmlForRemoveChar);
htmlForRemoveChar = htmlForRemoveChar.replace(tempChar, '<span class="specialChar "' + SpClass[splChar] + '"">W</span>');
alert(htmlForRemoveChar);
k++;
}
$("#test").html(htmlForRemoveChar);
}
<div id="test">this is test & i am doing testing</div>
<input type="button" onclick="temp();" value="Remove&">
答案 0 :(得分:2)
您只需更改此行:
var tempChar = "/" + splChar + "/g";
要:
var tempChar = new RegExp(splChar, 'g');
目前,您正在替换文字String
,例如'/a/g'
。如果您需要动态创建正则表达式的内容,则需要使用RegExp
。如果内容是静态的,那么您可以使用正则表达式文字。
答案 1 :(得分:1)
尝试将replace(tempChar
替换为replace(new RegExp(splChar, 'g')
。
看起来您使用的是字符串文字,而不是正则表达式文字。正则表达式的文字是这样的:
var x = /x/g;