2011-07-07 32 views
1

私はいくつかの特別なタグを含むテキストを変更やろうとしていて、内側のテキストを置き換えます。私はこのテキストを持っている場合はJavaScriptの正規表現

:私は私がやりたいことの例で説明するのが容易である

...それは、単一の正規表現で可能なはず信じて、しかし、立ち往生しています

{Lorem Ipsum}は、印刷と植字業界である の単純な{ダミーテキスト}です。

<span>Lorem Ipsum</span> is <span>simply dummy</span> text of the printing and typesetting industry. 

I「}」なし以前のマッチング「{」それは無視されるべきであると遭遇した。この結果として、私が欲しい

私はこの\{(.*?)\}ですべての内部のテキストを一致させることができます知っているが、にappriciatedされます任意の助けを続行する方法に失われています。

答えて

5

あなたが近くにあります。

text = text.replace(/{(.*?)}/g, '<span>$1</span>') 

はすべきことです。 g修飾子は、パターンのすべての発生を置き換えるためにreplaceなり、$1は、最初のキャプチャグループの内容を参照します。ところで

{(.*?)}は特殊な構成ではないため、{}をエスケープする必要はありません。わかりやすくするために、それを脱出する方が良いかもしれません。 MDN documentation内のJavaScriptの正規表現について

より。

+0

鮮やかな - ありがとう! – Muleskinner

0
var str = '{Lorem Ipsum} is simply {dummy text} of the printing and typesetting industry.'; 
var spanStr = str.replace(/{(.*?)}/g, '<span>$1</span>'); 
1

より良い方法は、\{([^{}]*)\}と一致させることです。これにより、中括弧のペアのみが一致することが保証されます。アンバランスなマッチはこの方法では不可能です。

result = subject.replace(/\{([^{}]*)\}/g, "<span>$1</span>"); 

ただし、ネストされた中括弧が可能な場合は、これを数回適用する必要があります。もちろん、それらの中かっこがコメント、引用符などにあるかどうかはチェックしません。