Регулярное выражение для подсчета количества групп захвата в регулярном выражении

Мне нужно регулярное выражение, которое проверяет произвольное регулярное выражение (в виде строки), возвращая количество групп захвата. Пока у меня есть ...

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

Это работает для некоторых случаев, когда предположение о том, что любая группа, начинающаяся с вопросительного знака, не захватывает. Он также считает пустые группы.

Он не работает для скобок, включенных в классы символов, или для исключенных скобок, и, возможно, для некоторых других сценариев.

Ответы на вопрос(2)

Ваш ответ на вопрос