3

正規表現を使用するのに多くの問題があります。

これが私がやろうとしていることです...

text<div> text </div><div> text </div><div> text </div>

それをに変える

text<br> text<br>text<br>text

やってみた...

newhtml = newhtml.replace(/\<div>/g,'<br>');
newhtml = newhtml.replace(/\</div>/g,' ');

しかし、これは間違った出力を与えます。jqueryはこれを行うためのより良い方法を提供していますか?

4

7 に答える 7

7

バックスラッシュだけをエスケープする必要があるため、間違ったことをエスケープしているためです。

newhtml = newhtml.replace(/<div>/g,'<br>');
newhtml = newhtml.replace(/<\/div>/g,' ');
于 2012-08-23T11:41:21.657 に答える
2

はい、あなたは正しいです。jQuery はこれを行うためのより良い方法を提供します。

最初に読むと面白い

特定の問題に対する簡単でエレガントなソリューション。

$('div').replaceWith(function(){
  return "<br>"+$(this).html();
});​

jsフィドル

于 2012-08-23T12:01:56.507 に答える
1

これは仕事をしなければなりません:

text.replace(/(<\/?\w+?>)\s*?(<\/?\w+?>)|(<\/?\w+?>)/g,'<br>')

これは、次のような属性を持つタグがない場合にのみ機能しますが、例で行った<div id="foo1"> ようにエスケープする必要はありません<が、代わりにエスケープする必要があります/

于 2012-08-23T11:42:40.630 に答える
1

正規表現が必要ない場合は使用しないでください。文字列リテラルを置き換えるだけです。

text.replace("<div>","<br>").replace("</div>","");

注: このソリューションはこのシナリオに正確に適用されます。通常、正規表現の使用に反対するものは何もありません。

于 2012-08-23T11:53:11.073 に答える
0

単純な正規表現を使用してこれを実現できます

output = inputText.replace(/<\w{0,}\W{0,}>|<\W{0,}\w{1,}>/ig, "With whatever you want it to be replaced with")

または、これを行うことができます

String.prototype.replaceTags = function( replacementText )
{      
    var x = new RegExp( "(" + replacementText + ")+" , "ig");
    return this
           .replace( /<\w{0,}\W{0,}>|<\W{0,}\w{1,}>/ig, replacementText )
           .replace( x, replacementText )  
}

そして、次のように文字列で直接呼び出します

"text<div> text </div><div> text </div><div> text </div>".replaceTags( "<br>" )

あなたはこれを手に入れるでしょう -"text<br> text <br> text <br> text <br>"

これにより、「<」で始まる文字列の部分が検索され、タグが「/」で終了し、最後に「>」で終了している場合、「div/p/br」の間にテキストが含まれます。要素が大文字または小文字で記述されているかどうかわからない場合は、大文字と小文字を区別しないと役立ちます。

于 2014-02-04T08:36:57.673 に答える
0

これを行う簡単な方法は次のとおりです。

$('.container').html(function(i, html) {
    return html.replace(/<(|\/)div>/g, function(match) {
        return match == '<div>' ? '<br>' : '';
    });
});

/<(|\/)div>/<div>:またはに一致し</div>ます。

デモ

.containerhtmlが配置される場所です。

于 2012-08-23T11:54:00.243 に答える
0

JQuery を使用したワンライナー

newhtml = $(newhtml ).text().split(' ').join('<br/>');
于 2012-08-23T12:05:22.387 に答える