javascript – 正则表达式来计算正则表达式中捕获组的数量

我需要一个正则表达式来检查任意的正则表达式(作为一个字符串),返回捕获组的数量.到目前为止我有…

arbitrary_regex.toString().match(/\((|[^?].*?)\)/g).length

哪些适用于某些情况,假设任何以问号开头的组都是非捕获.它也是空的组.

它不适用于字符类或转义括号中的括号以及可能的其他方案.

最佳答案
修改正则表达式,使其匹配一个空字符串,然后匹配一个空字符串,并查看它返回的组数:

var num_groups = (new RegExp(regex.toString() + '|')).exec('').length - 1;

示例:http://jsfiddle.net/EEn6G/

转载注明原文:javascript – 正则表达式来计算正则表达式中捕获组的数量 - 代码日志