正则表达式捕获字符,包括标记之间的空格

时间:2014-03-19 20:34:34

标签: javascript regex

我正在尝试解析短代码:

[shortcode]the content inside[/shortcode]

这很好,因为它只有一行,但只要我有多行,我就无法捕获该组:

[shortcode]
this is 

the content
[/shortcode]

我匹配内联文字的当前表达式为:\[([^\]]*?)\](.*)\[\/\1\]

我无法修改(.*)部分以捕获包括新行在内的所有内容。 这将在javascript中使用,因此我无法使用/s修饰符。

这里可以看到一个例子:http://regex101.com/r/nZ1hZ4

2 个答案:

答案 0 :(得分:1)

如果您想捕获所有内容,请使用[^]代替.

\[([^\]]*?)\]([^]*)\[\/\1\]

答案 1 :(得分:1)

由于Javascript不支持DOTALL标记,因此您可以使用[\s\S]代替DOT来匹配新行:

\[([^\]]*?)\]([\s\S]*?)\[\/\1\]