1

ページの HTML をプレーン テキストとして変数に格納しています。ここで、テキストの一部を削除する必要があります。これは、変更する必要がある HTML の一部です。

<div class="post"><a name="6188729"></a>
    <div class="igmline small" style="height: 20px; padding-top: 1px;">
        <span class="postheader_left">
            <a href="#"  style="font-size:9pt;"> RuneRifle </a>
            op 24.08.2012 om 21:41 uur
        </span>
        <span class="postheader_right">
            <a href="http://link">Citaat</a> <a href="http://link">Bewerken</a>
        </span>
        <div style="clear:both;"></div>
    </div>
    <div class="text">Testforum</div>
    <!-- Begin Thank -->
    <!-- Thank End -->
</div>

これらは仕事を置き換えます:

pageData = pageData.replace(/href=\".*?\"/g, "href=\"#\"");
pageData = pageData.replace(/target=\".*?\"/g, "");

しかし、この置換はまったく機能しません:

pageData = pageData.replace(
  /<span class=\"postheader_right\">(.*?)<\/span>/g, "");

spanクラスとその中のすべてをすべて削除する必要がありますが、うまくいきpostheader_rightません。私の正規表現の知識はそれほど大きくないので、どのように答えに至ったのか、それがどのように機能するかについて簡単に説明していただければ幸いです。

4

2 に答える 2

2

ドットは改行と一致しません。[\s\S]すべての空白文字または非空白文字 (つまり、すべて) に一致するため、ドットの代わりに使用します。

<aMike Samuel が言うように、特に異なる順序で発生する可能性のある属性を探す必要がある場合、HTML で許可されている複雑さを考慮すると (たとえば、 の後に改行がある場合)、正規表現は実際には最善の方法ではありませんが、それはサンプル HTML の大文字と小文字を一致させる方法です。

于 2012-08-25T12:20:04.580 に答える
1

クラス pos​​theader_right とその中のすべてを含むすべてのスパンを削除する必要がありますが、うまくいきません。

スパンを見つけるために正規表現を使用しないでください。 正規表現を使用して HTML を解析する: なぜですか?

var allSpans = document.getElementsByClassName('span');
for (var i = allSpans.length; --i >= 0;) {
  var span = allSpans[i];
  if (/\bpostheader_right\b/.test(span.className)) {
    span.parentNode.removeChild(span);
  }
}

するべきです。

新しいブラウザーでのみ作業する必要がある場合getElementsByClassNameは、さらに簡単になります。

「test」のクラスを持つすべての div 要素を検索します

var tests = Array.filter( document.getElementsByClassName('test'), function(elem){
  return elem.nodeName == 'DIV';
});
于 2012-08-25T12:24:19.507 に答える