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),允许 $ 匹配一行的结尾,而 ^ 匹配下一行的开头。
  • 一个匹配任何字符的 javascript 正则表达式技巧,包括换行符:[\s\S],详见此处
  • 一个积极的前瞻,以确保新行后面的东西是一个数字:(?=\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 回答