Wie behebe ich den Fehler "Ungültige Gruppe", wenn ich versuche, Grubers "verbesserte" URL zu verwenden, die dem regulären Ausdrucksmuster in JavaScript entspricht?

Ich versuche John Gruber's @ zu integrierEin verbessertes liberales, genaues Regex-Muster für übereinstimmende URLs in eines meiner Javaskripte ein, aber der WebKit-Inspektor (in Google Chrome 5.0.375.125 für Mac) gibt einen Syntaxfehler "Ungültige Gruppe" mit regulären Ausdrücken aus.

Gruber's originaler regulärer Ausdruck lautet 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 Zeile aus meinem JavaScript mit dem regulären Ausdruck lautet wie folgt (mit Schrägstrichen mit umgekehrten Schrägstrichen):

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 der Google Chrome (V8?) - Fehler lautet 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 der Safari-Fehler lautet wie folgt:

SyntaxError: Invalid regular expression: unrecognized character after (?

Er behauptet, es sollte in modernen JavaScript-Regexp-Interpretern funktionieren, von denen ich annehmen würde, dass es WebKit & V8 sind. Unterstützt die Regexp-Syntax von JavaScript nicht das(?: (verdammt Google für nicht indizierte Interpunktion!) Gruppensyntax? Habe ich es gerade verpasst, etwas zu entkommen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage