3

//ドキュメント内で (スラッシュ)を見つけて . で囲もうとしていspanます。

私はもう試した

var slashes = "//";
/slashes+/

したがって、出力は次のようになります。

Hello There! I Am <span class="slashes">//</span> An Alien

jQuery .replace()and :containsbut では何も起こりません。これを正しく行うための正規表現は初めてです。どうすればいいですか?

編集:私が試したこと: この質問の解決策はうまくいきませんでした:

function slashes($el) {

   $el.contents().each(function () {
       dlbSlash = "//";
       if (this.nodeType == 3) { // Text only
           $(this).replaceWith($(this).text()
               .replace(/(dlbSlash)/gi, '<span class="slashes">$1</span>'));
       } else { // Child element
           slashes($(this));
       }

   });
}

slashes($("body"));
4

4 に答える 4

3

正規表現でスラッシュをエスケープする必要があります。試す

var mystring = "adjfadfafdas//dsagdsg//dsafda"
mystring.replace(/\/\//g,'<span class="slashes">\/\/</span>');

出力する必要があります

"adjfadfafdas<span class="slashes">//</span>dsagdsg<span class="slashes">//</span>dsafda"

h2 タグと p タグのスラッシュを置き換えたい場合は、次のようにループできます。

$('h2, p').each(function(i, elem) { 
    $(elem).text(
        $(elem).text().replace(/\/\//g,'<span class="slashes">\/\/</span>'));
});

ただし、これにより、p および h2 タグに含まれていた可能性のある追加の html タグが吹き飛ばされます。

于 2012-09-19T17:48:51.150 に答える
2

これは、これを行うもう1つの方法です

//Find html inside element with id content
var html = $('#content').html();
//Replace // with <span style='color:red'>//</span>
html = html.replace(/\/{2}/g,"<span style='color:red'>$&</span>");
//Return updated html back to DOM
$('#content').html(html);​

ここにデモがあります

于 2012-09-19T18:11:53.190 に答える
2

あなたは正しい場所を探していたと思います。修正する唯一のことは、正規表現です。

.replace(/\/\//g, '<span class="slashes">$1</span>'));

ページを壊す可能性のある本文の innerHTML をグローバルに置換するのではなく、テキスト ノード (タイプ 3) に注目することが重要です。

于 2012-09-19T18:21:29.280 に答える
0

このような置換をシングル//のみに適用する場合は、

mystring = mystring.replace(/(\/{2})/g, "<span class=\"slashes\">$1</span>");

ただし、それを 2 つ以上のスラッシュに適用する場合は、

mystring = mystring.replace(/(\/{2,})/g, "<span class=\"slashes\">$1</span>");

ただし、偶数のスラッシュ ( 、 など) に適用する場合は//////次を使用する必要があります。

mystring = mystring.replace(/((?:\/{2})+)/g, "<span class=\"slashes\">$1</span>");

ここでコードをテストします。

于 2012-09-19T18:01:51.703 に答える