数组replaceThis
是用户生成的,因此我无法编写恒定的正则表达式规则。
但是如何创建正则表达式规则?
有什么好的解决方案的想法吗?
var replaceThis = new Array();
replaceThis[0] = ':)';
replaceThis[1] = 'XD';
replaceThis[2] = '-.-';
replaceThis[3] = 'hello world';
replaceThis[3] = ' a ';
replaceThis[3] = ' B ';
var message = 'text text :) text text -.- and hello world XD and text a btext B text text';
$.each(replaceThis, function(i)
{
var regex = new RegExp (" ??? ","gi");
message = message.replace(regex,'<span class="blue">'+????+'</span>');
});
$('body').append(message+'<hr/>');
游乐场:http://jsfiddle.net/s7b3r/2/
提前致谢!
杰米
最佳答案
Check the working DEMO。
您需要转义正则表达式的特殊字符。
String.prototype.escapeRegExp = function() {
return this.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
}
然后像这样使用它:
$.each(replaceThis, function(i, data){
var regex = new RegExp(data.escapeRegExp(),"gi");
message = message.replace(regex, '<span class="blue">$&</span>');
});