2014-05-02 12 views

Antwort

7

In der einfachen Art, reguläre Ausdrücke in JavaScript zu verwenden, würden Sie es mit dem Zeichen / abgrenzen. Wenn Sie jedoch das globale Objekt RegExp verwenden möchten, müssen Sie eine Zeichenfolge als erstes Argument an den Konstruktor übergeben, indem Sie die normalen String-Escape-Regeln verwenden. Die folgenden sind gleichwertig.

// shorthand way. 
var re = /\w+/; 
// a way to pass a string in 
var re = new RegExp("\\w+"); 
+2

Danke. Es kommt mir vor, dass Double-Escaping ein MAJOR-Schmerz ist, also denke ich, dass ich dabei bin, einzelne Escapes für das Zeichen "/" zu verwenden und "/" als Trennzeichen zu verwenden. Es wäre toll, wenn jemand eine Bibliothek oder eine spezielle Funktion schreiben würde, um die Regexes in Javascript einfacher zu machen! – pepper

+0

Ich hatte Erfolg mit [XRegExp] (http://xregexp.com/). – L0j1k

6

Sind wir beschränkt auf nur "/" in Javascript?

Nicht wirklich .. Sie können durch new RegExp (string) constructor. Verwendung mit einem beliebigen regex Begrenzer vermeiden

var re = new RegExp (string); 

Nur daran denken, dass dies erfordert, dass Sie statt einzelner Flucht zu verdoppeln zu entkommen.

+2

Gute Antwort, aber ich würde immer noch gerne wissen, ob ich ein anderes Zeichen von "/" in meiner Syntax oben verwenden kann. Wenn ich die Regex auf diese Weise deklarieren muss, braucht es mehr Typisierung. Ich versuche die Zeit zu reduzieren, die benötigt wird, um Regex-Einzeiler zu schreiben. – pepper

+3

@pepper können Sie nicht. Ein JavaScript-Parser wird in allen Arten von Knoten gebunden, wie es mit dem '/' Begrenzer ist; irgendeinen anderen Charakter zuzulassen wäre ernsthaft problematisch. – Pointy

+0

Sie müssen die Regex mit neuen RegExp (String) instanziieren und alle Sonderzeichen zweimal innerhalb, entziehen Sie die Lösung. – pepper

5

In Javascript, wenn Sie einen regulären Ausdruck, Ihre einzige Option Inline wollen, ist das forwardslash Trennzeichen: /foo/

Wie andere Antworten beachten, können Sie auch einen regulären Ausdruck einer Variablen zuweisen new Regexp("foo") verwenden.

Die Verwendung mehrerer Begrenzer ist definitiv eine Perl-Sache. In Perl können Sie fast jedes Zeichen als Trennzeichen, zum Beispiel mit Zeichenfolgen verwenden:

typische Syntax einfache Anführungszeichen verwenden - 'dipset'

die q-Funktion - q(dipset)q!dipset!q%dipset%

Ob dies etwas produziert lesbar ist abhängig vom Kontext. Es ist schön, dass Perl dies ermöglicht, wenn das Ergebnis lesbar ist. Zum Beispiel sind reguläre Ausdrücke nicht genug lesbar genug, ohne einen Haufen von Backslashes zu haben.

Verwandte Themen