正则表达式将整个列表捕获为一个项目 - javascript

时间:2018-02-26 20:09:44

标签: javascript regex

我正在使用字符串文本的js过滤器,我想使用正则表达式捕获列表项的整个列表,所以我可以计算它们并迭代它们。

请查看我要实现的目标:https://regex101.com/r/Jd3JYW/2/

我知道如何使用此正则表达式((^\*[^\*](.*)$)+)/gm分别捕获行,但我需要捕获整个列表,以便我可以区分两个列表,因此我可以使它们从n.1开始。

我希望以下代码可以正常工作{{1}}我认为这将捕获第一个项目(因为它适用于单独的行)以及任何后续的直到patern都会被破坏。但是它不起作用,我仍然获得了单独的线路。你有什么想法的人,如何捕获整个列表?谢谢。

1 个答案:

答案 0 :(得分:2)

您使用$来匹配行结尾,但它是零宽度断言。您应该使用一些消费模式来匹配行结尾,例如[\r\n]+

/^(?:\*[^*\n].*(?:[\r\n]+|$))+/gm

请参阅regex demo

<强>详情

  • ^ - 开始行
  • (?:^\*[^*\n].*(?:[\r\n]+|$))+ - 1个或多个序列:
    • \* - *字符
    • [^*\n] - LF以外的字符*
    • .* - 除了换行符之外的任何0 +字符,尽可能多
    • (?:[\r\n]+|$) - 1 + LF或CR符号或行尾(以匹配最后一行)。