Regex, um die Anzahl der Erfassungsgruppen in einer Regex zu zählen

Ich benötige einen regulären Ausdruck, der einen beliebigen regulären Ausdruck (als Zeichenfolge) untersucht und die Anzahl der Erfassungsgruppen zurückgibt. Bisher habe ich ...

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

Das funktioniert in einigen Fällen, in denen die Annahme, dass jede Gruppe, die mit einem Fragezeichen beginnt, nicht erfasst wird. Es werden auch leere Gruppen gezählt.

Es funktioniert nicht für Klammern, die in Zeichenklassen enthalten sind, oder maskierte Klammern und möglicherweise einige andere Szenarien.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage