第一次使用正则表达式我在格式化时遇到一些麻烦来选择特定的}
我希望能够消除例如}}}
,但仍然应该选择}}
。
到目前为止我有这个
/^(?!\||}}})(([A-Za-z0-9\s:,']|{{{|{{|}}|{:|:}|)+)/
然而,如果x}}}
发生这种情况,只需匹配x}}
,它就会与x
匹配。如果我提交x}}
,则返回值应为x}}
。
示例输入:
示例1:x}}}
输出:x
。
示例2:x}}
输出:x}}
答案 0 :(得分:0)
/[{]*([^{}]}}([^}]|$)|[^{}]*)[}]*/
这会在第一个捕获组中捕获您的测试结果。
示例:强>
let regex = /[{]*([^{}]}}([^}]|$)|[^{}]*)[}]*/
console.info('{{{x}}}'.match(regex)[1])
console.info('x}}}'.match(regex)[1])
console.info('x}}'.match(regex)[1])

注意:对于此特定用例,我不宽恕使用正则表达式。它不是用于阻止可能递归模板字符串内容的好工具。
答案 1 :(得分:0)
您可能想尝试一下:
/((?!\})[^\}\{]*(?=\}{3}[^\}]?))|((?!\})[^\}\{]*\}{2}(?=[^\}]?))/g
var str = "{{{x}}{{x1}}{{x2}}}";
var regxPat = /((?!\})[^\}\{]*(?=\}{3}[^\}]?))|((?!\})[^\}\{]*\}{2}(?=[^\}]?))/g;
var matchResult = str.match(regxPat);
console.log(matchResult);