0
var tags=["div","span","body"];
for (i=0; i<=tags.length; i++){
  source = source.replace(/\&lt\;<tags[i]/i, '<span class="tags[i]">&lt;tags[i]</span>');
}

基本的に、私はすべての開始div、span、およびbodyタグを、それに応じてクラスが設定されたスパンの周りに配置しようとしています。しかし、そこに変数を入れるのに問題があります。

異なるタグごとに行と行を配置できますが、この関数がキーを押すたびに呼び出されることを考慮して、コードをできるだけ小さく効率的に保ちたいと思います。

または他の選択肢はありますか?私は、これらの線に沿った何かが可能であるならば、それはさらに良いことを意味します:

source = source.replace(/\&lt\;<div|<span/i, '<span class="div|span">&lt;div|span</span>');

しかし、それは明らかに私をどこにも連れて行かない。

4

2 に答える 2

2

RegExpオブジェクトを使用して、文字列から正規表現を作成できます。

source = source.replace(new RegExp("\\&lt\\;<" + tags[i], "i"), '<span class="' + tags[i] + '">&lt;' + tags[i] + '</span>');

ただし、タグをキャプチャして置換で参照することにより、代替案のアイデアも可能です。

source = source.replace(/\&lt\;<(div|span|body)/i, '<span class="$1">&lt;$1</span>');
于 2013-02-07T21:57:03.907 に答える
1

正規表現は次のように使用できます| (equivalent of OR)()一致する要素(div、span、またはbody)を取得するために使用され、次のように取得できます。$1

source.replace(/<(div|span|body)/i,'<span class="$1">&lt;$1&gt;</span>')
于 2013-02-07T21:58:32.977 に答える