正则表达式扫描特定数量的重复字符

时间:2016-10-24 02:45:21

标签: javascript

第一次使用正则表达式我在格式化时遇到一些麻烦来选择特定的}

我希望能够消除例如}}},但仍然应该选择}}

到目前为止我有这个

/^(?!\||}}})(([A-Za-z0-9\s:,']|{{{|{{|}}|{:|:}|)+)/

然而,如果x}}}发生这种情况,只需匹配x}},它就会与x匹配。如果我提交x}},则返回值应为x}}

示例输入:

示例1:x}}}输出:x

示例2:x}}输出:x}}

2 个答案:

答案 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);