Heim  >  Fragen und Antworten  >  Hauptteil

Reguläre Javascript-Ausdrücke: Wie behält man nur übereinstimmende Gruppen für einen beliebigen regulären Ausdruck bei?

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!

P粉574695215P粉574695215276 Tage vor368

Antworte allen(1)Ich werde antworten

  • P粉071626364

    P粉0716263642024-01-17 15:46:08

    发现: 如何访问JavaScript 正则表达式? 看起来(至少最初)使用 exec() 会做我想要的事情。

    Antwort
    0
  • StornierenAntwort