匹配模式是前一个匹配的一部分

时间:2016-02-11 00:53:48

标签: javascript regex

我正在尝试构建一个匹配错误放置的li标签的表达式。在大多数情况下,它运作良好,除了我需要匹配的一个事件是前一场比赛的一部分。

这是我的表达:

/(<li>.*?)(<\/li>)(.*?)(<br><(li|\/ul)>)/gi

我试图匹配的文字如下:

<ul><br><li> text before invalid closing tag</li> remaining text<br><li> this should also be matched</li> but isn't<br><li> text before invalid closing tag</li> remaining text<br></ul><br>

这里应该有3场比赛,但我只得到2场比赛。您可以在下面的链接上测试,但中间部分不匹配。我不确定是否有正确的方法来匹配之前匹配的文字。

http://regexr.com/3cp2v

1 个答案:

答案 0 :(得分:0)

我实际上能够通过将模式匹配到下一个开始 li 或关闭 ul 标记来找到解决方案。这会阻止我的匹配重叠,并根据需要对结果进行分组。

/(<li>.*?)(<\/li>)(.*?)<br>(?=<(li|\/ul)>)/gi