Wie behebe ich „ungültige Gruppe“ Fehler beim Grubers „verbessert“ URL passende regexp Muster in JavaScript zu verwenden versuchen?

StackOverflow https://stackoverflow.com/questions/3559113

  •  01-10-2019
  •  | 
  •  

Frage

Ich versuche, John Grubers eine verbesserte Liberal, Accurate RegexMuster für Matching-URLs zu integrieren in einem meiner Javascripts, aber WebKit Inspektor (in Google Chrome 5.0.375.125 für Mac) gibt einen „Ungültige Gruppe“ regulären Ausdruck Syntaxfehler.

Grubers Original regexp ist wie folgt:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

Die Linie von meinem JavaScript w / die regexp ist wie folgt (w / Vorwärts-Schrägstriche Backslash geschützt):

tweet_text = tweet_text.replace(/(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi, '<a href="$1">$1</a>');

Und die Google Chrome (? V8) Fehler ist wie folgt:

Uncaught SyntaxError: Invalid regular expression: /(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/: Invalid group

Und die Safari Fehler ist wie folgt:

SyntaxError: Invalid regular expression: unrecognized character after (?

Er behauptet, es in der modernen JavaScript regexp Dolmetscher arbeiten sollte, was ich davon ausgehen würde WebKit & V8 wäre. Does JavaScript ist regexp-Syntax nicht die (?: unterstützen (verdammt Google für Interpunktion nicht indexiert!) Gruppierung Syntax? Habe ich gerade etwas vermissen zu entkommen?

War es hilfreich?

Lösung

Gah, es war der Modus Modifikator (das heißt die (?i)) am Anfang des Regex!

Ich ging durch Regular-Expressions.info des datails auf "JavaScript Regelmäßigen Ausdruck Flavor" , insbesondere die Liste von dem, was nicht unterstützt, und es war der ‚Modus-Modifikator‘, die ich bereits angegeben hatte nach der Schließung vor dem regulären Ausdruck zerschneiden. aus einem zerrissenen es scheint alles gut.

Also, meine JavaScript Regex ist nun wie folgt:

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top