12 Stimmen

URL regex funktioniert nicht in javascript

Ich versuche zu verwenden URL-Regex von John Gruber in Javascript, aber NetBeans meldet mir ständig einen Syntaxfehler und illegale Fehler:

 var patt = "/(?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`!()\[\]{};:
'".,<>?«»“”‘’]))/";

Weiß jemand, wie man das Problem lösen kann?

22voto

Flambino Punkte 18137

Wie andere schon gesagt haben, liegt es an den Anführungszeichen. Aber alternativ können Sie einfach die Regexp als ein Literal in Javascript schreiben (aber dann müssen Sie die Schrägstriche in den Zeilen 1 und 3 stattdessen zu entkommen).

var regexp = /\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`!()\[\]{};:'".,<>?«»“”‘’]))/i;

Außerdem habe ich den Modifikator für die Groß- und Kleinschreibung an das Ende gesetzt. Einfach so. (edit: Nun, nicht nur "weil" - siehe Alan Moores Kommentar unten)

Hinweis: Ob Sie ein Literal oder eine Zeichenkette verwenden, es muss in 1 Zeile stehen.

0voto

epoch Punkte 16219

Fügen Sie den gesamten Ausdruck in eine Zeile ein und entfernen Sie die Anführungszeichen am Anfang und Ende, so dass er wie folgt aussieht var patt = /the-long-patttern/; Netbeans wird sich immer noch beschweren, aber die Browser nicht, und das ist das, was zählt.

0voto

seventeen Punkte 219

Sie sollten es in NetBeans so schreiben:

      "(?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`!()\\[\\]{};:'\".,<>?«»“”‘’]))";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X