javascript - 使用 Javascript 标记字符串,包括不匹配的块
问题描述
我有这个字符串:
Test block {{section1|val}}
test block
{| class="class1"
some test
|}
我想获得以下元素:
Test block
{{section1|val}}
test block
{| class="class1"\nsome test\n|}
我可以使用以下正则表达式获得{
/}
周围的块:
const regex = /(\{(.|[\r\n])*?)\}/g;
const matches = content.match(regex);
但是我怎样才能同时获得其他文本块。
谢谢你的帮助!蒂埃里
解决方案
{{ }}
在分隔符、{| }}
分隔符和除 a 之外的任何内容之间交替{
:
const input = `Test block {{section1|val}}
test block
{| class="class1"
some test
|}`;
console.log(input.match(/{{.*?}}|{\|.*?\|}|[^{]+/gs));
如果您不想匹配分隔符之外的前导/尾随空格,请更改为
{{.*?}}|{\|.*?\|}|\S[^{]+[^{\s]
^^ ^^^^^^