2009-06-15 6 views
1

Ich habe Leute gesehen, wie folgt vorgehen:Erste Ergebnis RegExp nach in verwendeten if-Anweisung

if (/Firefox\/(\+S)/.test(userAgent)) { 
    firefox = RegExp.$1; 
} 

Ich weiß (sorta), was die regexp tut, aber ich bin nicht wirklich sicher, wie es sein kann, Zugriff mit RegExp.$1.

Und als Randnotiz:

if (/Win(?:dows)?([^do]{2})\s?(\d+\.\d+)?/.test(ua)) { 
    if (RegExp.$1 == "NT") { 
     switch (RegExp.$2) { 

Was ist der Unterschied zwischen $1 und $2?

Antwort

4

Was ist der Unterschied zwischen $ 1 und $ 2?

Das sind die Verweise auf die captured groups (von der regexp captured)

Die JavaScript flavor von Regex Gruppe # 1 als $ 1 und Gruppe # 2 als $ 2 bezieht.

Win(?:dows)?([^do]{2})\s?(\d+\.\d+)? 
    ^  ^  ^
    |   |   | 
    |   group#1  group#2 
    | 
    ignored group (?: means non-capturing) 
+0

schönes Diagramm und schön Link (: Dank – peirix

0

RegExp ist ein globales Objekt, das jedes Mal aktualisiert wird, wenn eine RegExp ausgeführt wird. RexExp. $ 1 wird den Text enthalten, der durch den entsprechenden Satz von Klammern im letzten übereinstimmenden Muster übereinstimmt.

Für die Bemerkung am Rande: $ 1 enthält, ist der erste Teil des regulären Ausdrucks zwischen den Klammern, 2 $ der Sekunden etc ...