0

<br />段落の内側に改行と数字が続く場合は、JavaScriptで段落を分割したいと思います。

段落の例を次に示します。

aaaaaa aaaaa aaaaa aaaaa aaaa <br />
1   bbbb bbbbb bbbbb bbbb bbb <br />
2   cccc ccccc ccccc cccc ccc <br />
*   dddd ddddd ddddd dddd ddd <br />

そして、3つの要素を含む配列が必要です。

1.  aaaaaa aaaaa aaaaa aaaaa aaaa <br />
2.  1   bbbb bbbbb bbbbb bbbb bbb <br />
3.  2   cccc ccccc ccccc cccc ccc <br />
    *   dddd ddddd ddddd dddd ddd <br />

私はこれを試しました:

<br \/>\d

しかし、これは私が推測する改行のために機能しませんでした。

ご助力ありがとうございます。

4

2 に答える 2

1

正規表現については、 http://txt2re.com/を試してください。これは非常に優れており、正規表現を生成するのに非常に役立ちます。

("aaaaaa aaaaa aaaaa aaaaa aaaa <br />\r\n\
1   bbbbbbbbbbb <br />\r\n\
2   cccc ccccc ccccc cccc ccc <br />\r\n\
3   dddd ddddd ddddd dddd ddd <br />")
    .split(/\s*([\d|\*]+.+<br[^>]*>)[\r|\n|\r\n]\s*/gmi) 
                                      // criteria filtering
    .join('\r\n')                     // removing the last empty element (2nd) after split
    .replace(/\r\n\r\n/gmi,'\r\n')    // remove double line breaks
    .split(/\r\n/);                   // split again
于 2012-07-24T06:51:13.790 に答える
1

文字列が という変数に格納されていると仮定するとstr、次のように動作するはずです。

str.split(/<br \/>$[\s\S]^(?=\d+)/m)

利用した:

  • 複数行モード ( /m)。$ を 1 つの行の末尾に一致させ、^ を次の行の先頭に一致させます。
  • こちら で[\s\S]詳しく説明されているように、改行を含む任意の文字に一致する JavaScript 正規表現のトリック: 。
  • 新しい行に続くものが数字であることを確認するための肯定的な先読み(?=\d+): . ただし、一致には含まれないため、数字は文字列から削除されません。

編集:<br />これにより、リストの最後の要素を除くすべての要素から sが削除されます。今はもっと良い方法が思いつかないので、次のような方法でそれらを再度追加することができます:

var parts = str.split(/<br \/>$[\s\S]^(?=\d+)/m);
var final = [];
for (var i = 0; i < parts.length - 1; i++) {
    final.push(parts[i] + '<br />');
}
final.push(parts[parts.length - 1]);

理想的ではありませんが、私にはうまくいくようです。

于 2012-07-24T07:01:14.817 に答える