2017-09-14 14 views
1

HTML文字列の内容を<br>から2に置き換える必要があります。regex最初の要素を置き換えます

(<br\s*\/?>)

このテキストに含まれるすべてのタグにマッチします:

var text = 'text<BR><BR>text text<BR>text;' 

が一致すると置き換えると、私は意志、私は別の1以下のタグを持っている場合しかし、私は達成できないことですhave

text = text.replace.replace(/(<br\s*\/?>)>/gi, "<BR\/><BR\/>") 

console.log(text); //text<BR/><BR/><BR/><BR/>text text<BR/><BR/>text;" 

正規表現に1つのタグを増やす方法はありますか?そしてこれを達成してください:

console.log(text); //text<BR/><BR/><BR/>text text<BR/><BR/>text;" 

私はループでこれを達成できますか?

+0

あなたは、交換でハードコード '
'にしたいですか?シーケンスに最後に使われたのと同じ 'br 'を追加したくないのですか?私はちょうど試してみたし、 'テキストを得た


テキストテキスト

テキスト;' –

+0

あなたは出力として何をしたいですか? – Durga

+0

テキスト


テキストテキスト

テキスト; –

答えて

2

あなたが使用することができるいずれか

var text = 'text<BR><BR>text text<BR>text;' 
 
text = text.replace(/(<br\s*\/?>)+/gi, "$&$1"); 
 
console.log(text); // => text<BR><BR><BR>text text<BR><BR>text;

ここで、大文字と小文字を区別しない方法で(<br\s*\/?>)+/giマッチ1又は<br> Sの複数のシーケンスの最後の値を保持するその途中で各タグを(キャプチャ中最後のグループの後にビーバーがあり、"$&$1"はマッチ全体($&)に置き換えられ、最後に<br>$1と追加します。

または

var text = 'text<BR><BR>text text<BR>text;' 
 
text = text.replace(/(?:<br\s*\/?>)+/gi, function ($0) { 
 
return $0.replace(/<br\s*\/?>/gi, "<BR/>") + "<BR/>"; 
 
}) 
 
console.log(text); // => text<BR/><BR/><BR/>text text<BR/><BR/>text;
ここ

(?:<br\s*\/?>)+は、各発生を捕捉することなく、1つの以上<br> Sしかしと一致し、コールバックの内部に、全て<br> Sは<BR/>として正規化されます<BR/>が結果に追加されます。

0

あなたは、任意の連続したがある場合にのみ、最後のタグをインクリメントする先(<br\s*\/?>)(?!<br\s*\/?>)/を負の外観を使用することができます。

var text = 'text<BR><BR>text text<BR>text;' 
 

 
text = text.replace(/(<br\s*\/?>)(?!<br\s*\/?>)/gi, "<BR\/><BR\/>") 
 

 
console.log(text);

関連する問題