如何在正则表达式中进行嵌套匹配?

时间:2016-02-25 23:11:19

标签: javascript regex

var matches = pattern.match(/\((.+?)\)/g);

匹配:

[e[1]]

返回“[e [1]”,我认为它是嵌套问题,我该如何解决?

1 个答案:

答案 0 :(得分:2)

如果您只对如何匹配固定分隔符中的子字符串感兴趣,可以使用XRegExp XRegExp.matchRecursive

  

返回最左侧和右侧分隔符之间的匹配字符串数组,或具有详细匹配部分和位置数据的对象数组。如果数据中的分隔符不平衡,则会引发错误。

由于分隔符已丢失,但您知道它们是什么,您可以在以后的所有匹配中恢复它们。

var str = '[e[1]] [ [e[[2]34]]]';
document.body.innerHTML = XRegExp.matchRecursive(str, '\\[', ']', 'g').map(x => '[' + x + ']');
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>