0

Javascriptで次の正規表現を使用しています。

comment_body_content = comment_body_content.replace(
  /(<span id="sc_start_commenttext-.*<\/span>)((.|\s)*)(<span id="sc_end_commenttext-.*<\/span>)/,
  "$1$4"
);

<span id="sc_start_commenttext-330"></span>HTMLコードでこのタグ(番号は常に異なります)とタグを見つけたいと思います<span id="sc_end_commenttext-330"></span>。次に、これらのタグ間のテキストとHTMLコードを削除して、返す必要があります。

交換前の例:

Some text and code
<span id="sc_start_commenttext-330"></span>Some text and code<span id="sc_end_commenttext-330"></span>
Some Text and code

交換後の例:

Some text and code
<span id="sc_start_commenttext-330"></span><span id="sc_end_commenttext-330"></span>
Some text and code

正規表現が機能し、テキストが正しく置き換えられる場合もあれば、そうでない場合もあります-間違いはありますか?助けてくれてありがとう!

アレックス

4

4 に答える 4

2

開始と対応する終了を一致させるパターンを使用する必要があります。次に例を示します。

/(<span id="sc_start_commenttext-(\d+)"><\/span>)[^]*?(<span id="sc_end_commenttext-\2"><\/span>)/

ここ\2で、終了タグは、開始タグ(\d+)の数字と一致する一致した文字列を指します。任意の文字の単純な式です。330[^]

于 2012-12-09T16:14:51.550 に答える
1

DOMの使用。

​var $spans = document.getElementsByTagName("span");
var str = "";

for(var i = 0, $span, $sibling; i < $spans.length; ++i) {
    $span = $spans[i];
    if(/^sc_start_commenttext/i.test($span.id)) {
        while($sibling = $span.nextSibling) {
            if(/^sc_end_commenttext/i.test($sibling.id)) {
                break;
            }
            str += $sibling.data;
            $span.parentNode.removeChild($sibling);
        }
    }
}

console.log("The enclosed string was: ", str);

ここにあります。

于 2012-12-09T16:42:30.010 に答える
0

私があなたの意図を正しく理解していれば、私.*は-に置き換え始めます。[0-9]+">

于 2012-12-09T16:14:42.563 に答える
0

正規表現を使用してHTMLを解析するのは通常は悪い考えですが、ネストされていないHTMLでは正規表現を使用して効果的に使用できます

var str = 'First text and code<span id="sc_start_commenttext-330"></span>Remove text<span id="sc_end_commenttext-330"></span>Last Text and code';
var re = /(.*<span id="sc_start_commenttext-\d+"><\/span>).*(<span id="sc_end_commenttext-\d+"><\/span>.*)/;
str.replace(re, "$1$2");

結果:

First text and code<span id="sc_start_commenttext-330"></span><span id="sc_end_commenttext-330"></span>Last Text and code

于 2012-12-11T19:15:02.547 に答える