Bruder, ich habe kürzlich JavaScript gelernt und gesehen, dass die Wissenspunkte ein wenig chaotisch waren, als ich regelmäßigen Ausdruck lernte, also schrieb ich einen Blog, um ihn zusammenzufassen.
Definition
Es gibt zwei Möglichkeiten, REG ExP in JavaScript zu definieren:
1) NEUE EXP: var exp1 = neuer Exp ("ABC");
2) Setzen Sie das Muster direkt zwischen zwei //: var exp2 = /abc /; //Notiz. . Es gibt keine Doppelzitate, wenn Sie es hinzufügen, wird es zu einer Zeichenfolge
Sonderzeichen
Visuell sind Sonderzeichen die gleichen wie die von Perl. . Verwenden Sie es einfach direkt
/D Ziffernzeichen
/W alphanumerische Zeichen ("Wortzeichen")
/S Whitespace -Zeichen (Platz, Tab, Newline und ähnlich)
/D Zeichen, die keine Ziffern sind
/W nicht alphanumerische Zeichen
/S Nicht-Whitespace-Zeichen
. Eine Periode entspricht allen Charakteren mit Ausnahme von Neulinnern
Es gibt eine sehr einfache Möglichkeit, sich zu erinnern:
D = Ziffer ist also eine Zahl
W = Wort, also sind es Buchstaben
S = Raum, also ist es ein Raum
Alle Kapitalisierungen sind umgekehrt. .
Klammern []
Wenn Sie Muster in Klammern setzen, bedeutet dies, dass es wahr ist, solange jeder Charakter übereinstimmt. (Es ist dasselbe wie Java oder Perl)
Zum Beispiel
Die Codekopie lautet wie folgt:
console.log (/[01]/. test ("023424"); // WAHR
console.log (/[01]/. test ("13424"); // WAHR
console.log (/[01]/. test ("23424"); // FALSCH
Klammern ()
Es bedeutet, dass alles in Klammern wahr sein muss
Zum Beispiel
Die Codekopie lautet wie folgt:
console.log (/[01]/. test ("013424"); // WAHR
console.log (/[01]/. test ("13424"); // FALSCH
console.log (/[01]/. test ("230424")); // FALSCH
console.log (/[01]/. test ("230142401")); // WAHR
Quantifizierer
Es ist dasselbe wie Java. . Diese Tabelle ist sehr gut. . Ich habe es immer gern benutzt
| Gierig | Widerwillig | Besitzergreifend | Bedeutung |
|---|---|---|---|
| X? | X?? | X?+ | X, einmal oder gar nicht |
| X* | X*? | X*+ | X, null oder mehrmals |
| X+ | X+? | X ++ | X, ein oder mehrmals |
| X {n} | X {n}? | X {n}+ | X, genau n -mal |
| X {n,} | X {n,}? | X {n,}+ | X, mindestens n -mal |
| X {n, m} | X {n, m}? | X {n, m}+ | X, zumindest n, aber nicht mehr als m -mal |
Ausdrucksobjektfunktionen
1) Test ist sehr einfach. Setzen Sie einfach den String zum Testen in test (...) ein, und diese Funktion gibt true/false zurück, was übereinstimmt/unpassungsfähig darstellt
2) Exec gibt diese Funktion NULL zurück, wenn keine Übereinstimmungszeichenfolge gefunden wird. Wenn es gefunden wird, wird ein Array zurückgegeben. Dies enthält Streicher von Übereinstimmungen in der Reihenfolge.
3) String.Replace (Expression1, String1) Diese Funktion ersetzt den Übereinstimmenteil im Expression mit String1. In String1 können Sie die Klammerngruppe im vorherigen Ausdruck verwenden
, um einen Teil davon zu ersetzen. Zum Beispiel "Co-ol" .Replace (/[/w] +/- [/w]+/, "$ 2- $ 1"); // "ol-Co" kann bis 9 US-Dollar verwendet werden
4) String.Replace (Expression, Funktion) Dies ist eine verbesserte Version und sehr leistungsfähig. Sie können jede gewünschte Ausgabe durch Funktion definieren. Die spezifische Nutzung ist hier nicht aufgeführt. Weitere Informationen finden Sie auf
Klicken Sie hier, um den Link zu öffnen
Dynamisch den Regent -Expression erzeugen
Diese Methode kann angewendet werden, wenn Sie etwas in Reg exp verwenden möchten, weiß nur über die Laufzeit
Um REG Exp zu generieren, müssen Sie String nur verwenden, um den RegEx -Look zu erstellen und dann den Konstruktor von Exp zu verwenden. (erwähnt zu Beginn des Artikels)
Zum Beispiel:
Die Codekopie lautet wie folgt:
var name = "Liebes"
"Oh mein Lieber" .Replace (neuer Exp (Name), "Gott"); // Oh mein Gott
Wenn der Name jedoch Sonderzeichen enthält, kann es im regulären Ausdruck verwendet werden, und die obige Methode macht häufig einen Fehler.
In diesem Fall können wir jedes Zeichen der Eingangszeichenfolge mit einem Backslash wie:
Die Codekopie lautet wie folgt:
var name = df [] vxv;
var expname = name.replace ("/[^/w/s]/g", "// $ &");
"Mein Name ist df [] vxv" .Replace (neuer Exp (Name), "Bob"); // Mein Name ist Bob