1

配列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/

前もって感謝します!
ジェイミー

4

1 に答える 1

4

動作中の 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>'); 
});
于 2012-12-16T09:20:25.743 に答える