Gibt es in der JS-Regex-API eine Möglichkeit, die Eingabe so umzuschreiben, dass nur übereinstimmende Gruppen (in der richtigen Reihenfolge) beibehalten werden, es jedoch mit beliebigen regulären Ausdrücken funktioniert (einschließlich regulärer Ausdrücke ohne Erfassung von Gruppen)?
Zum Beispiel für den regulären Ausdruck /abc([D-F]+)gh([I-K]+)/
和输入 abcFEEDghKIKI
,我想要输出 "FEEDKIKI"
, da es sich hierbei um die erfassten Teile handelt.
Der Eingabe-Regex kann jedoch auch /([a-zA-Z]+)/
sein, was lediglich den Originaltext für dieselbe Eingabe zurückgibt.
Wenn der reguläre Ausdruck /([0-9]+)/
ist, wird die leere Zeichenfolge zurückgegeben.
Der reguläre Ausdruck wird vom Tool generiert, aber es gibt viele reguläre Ausdrücke und ich möchte keinen Sonderfallcode für unterschiedliche Anzahlen von Erfassungsgruppen.
Idealerweise könnte ich in der Eingabe auch irgendwie auf die Länge des Matches zugreifen.
Ich gehe davon aus, dass es eine Möglichkeit gibt, dies über einen an replace()
(oder ähnliches) übergebenen Rückruf zu tun, aber es ist nicht klar, wie/ob es möglich ist, den Index der einfangenden Gruppe abzurufen (oder ob dies in JS erforderlich ist).
Im Wesentlichen versuche ich zu reproduzieren, was Sie über die MatchResult
API in Java tun können, wo Gruppen iteriert werden können und der Start-/Endindex der erfassenden Gruppe gefunden werden kann. < /p>
Vielen Dank im Voraus!
发现: 如何访问JavaScript 正则表达式? 看起来(至少最初)使用
exec()
会做我想要的事情。