2011-01-12 16 views

Antwort

37

Ihre regex ist perfekt, und ja, müssen Sie Schrägstriche entkommen, da JavaScript die Schrägstriche verwendet reguläre Ausdrücke, um anzuzeigen.

Das Problem ist jedoch, dass die replace JavaScript-Methode keine In-Place-ersetzen führt. Das heißt, es ändert nicht wirklich die Zeichenkette - es gibt Ihnen nur das Ergebnis der Ersetzung.

Try this:

myString = '/courses/test/user'; 
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"); 
document.write(myString); 

Diese myString auf den ersetzten Wert legt.

9

string.replace ändert nicht die ursprüngliche Zeichenfolge. Stattdessen gibt a eine neue Zeichenfolge zurück, für die die Ersetzung ausgeführt wurde.

Versuchen:

myString = '/courses/test/user'; 
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1")); 
9

/[\/]/g Spiele Slashes.
/[\\]/g stimmt mit umgekehrten Schrägstrichen überein.

+0

Und '/ [\/| \\]/g' passt sowohl vorwärts als auch rückwärts Schrägstriche. –

6

Eigentlich müssen Sie nicht den Schrägstrich innerhalb einer Zeichenklasse wie in einem Teil Ihres Beispiels (d. H. [^\/]* ist in Ordnung, nur [^/]*). Wenn es sich außerhalb einer Zeichenklasse befindet (wie beim Rest Ihres Beispiels, z. B. \/courses), müssen Sie Schrägstriche fliehen.

Verwandte Themen