首页 > 解决方案 > 使用 Javascript 标记字符串,包括不匹配的块

问题描述

我有这个字符串:

Test block {{section1|val}}
test block
{| class="class1"
some test
|}

我想获得以下元素:

我可以使用以下正则表达式获得{/}周围的块:

const regex = /(\{(.|[\r\n])*?)\}/g;
const matches = content.match(regex);

但是我怎样才能同时获得其他文本块。

谢谢你的帮助!蒂埃里

标签: javascriptregex

解决方案


{{ }}在分隔符、{| }}分隔符和除 a 之外的任何内容之间交替{

const input = `Test block {{section1|val}}
test block
{| class="class1"
some test
|}`;
console.log(input.match(/{{.*?}}|{\|.*?\|}|[^{]+/gs));

如果您不想匹配分隔符之外的前导/尾随空格,请更改为

{{.*?}}|{\|.*?\|}|\S[^{]+[^{\s]
                  ^^     ^^^^^^

推荐阅读