Javascript Regex跨换行符的多个匹配

时间:2017-07-11 01:33:04

标签: javascript regex

我仍在努力在Javascript中学习正则表达式。我试图创建一个降价转换器,它将转换如下:

> this text should be matched - &gt; <span>this text should be matched</span>

我已经解决了这个问题,但我试图让它变得更复杂,如下所示:

> this is a match
> so is this, but should be in the same match as above

> this should be a seperate match > this is nothing

等于:

<span>this is a match so is this, but should be in the same match as above</span>
<span>this should be a seperate match > this is nothing</span>

但我遇到的问题是使用我目前拥有的正则表达式(/^\>(.*?)(?=\>|\n\n)/gm),它将前两个作为单独的匹配。

请参阅我的示例:https://regex101.com/r/cZkJAT/2

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

您正在寻找正则表达式的dotall修饰符,它会强制点匹配不同的行,默认情况下不会这样做。 JS正则表达式不存在这种情况,但作为一种解决方法,您可以将正则表达式改写为以下内容:

(/^\>([\s\S]*?)(?=\>|\n\n)/gm

另外,作为关于行结尾的快速说明,Unix在您的模式中使用\n,但Window使用\r\n。要匹配以两者结尾的行,您可以使用\r?\n