Bruder, ich habe kürzlich JavaScript gelernt, als ich den regulären Ausdruck lernte. Ich fand, dass die Wissenspunkte etwas verwirrend waren, also habe ich einen Blog geschrieben, um ihn zusammenzufassen.
Definition
Es gibt zwei Möglichkeiten, reg exp in JavaScript zu definieren:
1) Neues exp verwenden: var exp1 = new exp("abc");
2) Platzieren Sie das Muster direkt zwischen den beiden /s: var exp2 = /abc/; //Hinweis. . Es gibt keine doppelten Anführungszeichen, wenn Sie sie hinzufügen.
Sonderzeichen
Die visuelle Betrachtung zeigt, dass die Sonderzeichen mit denen in Perl identisch sind. . Verwenden Sie es einfach direkt
d Ziffernzeichen
w Alphanumerische Zeichen („Wortzeichen“)
s Leerzeichen (Leerzeichen, Tabulator, Zeilenumbruch und ähnliches)
D Zeichen, die keine Ziffern sind
W Nicht alphanumerische Zeichen
S Nicht-Leerzeichen
Ein Punkt entspricht allen Zeichen außer Zeilenumbrüchen
Es gibt eine sehr einfache Möglichkeit, sich zu merken:
d = Ziffer So ist es Zahlen
w = Wort Es sind also Buchstaben
s = Leerzeichen Es sind also Leerzeichen
Alle Großbuchstaben sind umgekehrt. .
Klammern []
Das Einfügen von Muster in Klammern bedeutet, dass es wahr ist, solange es mit einem beliebigen Zeichen übereinstimmt. (Das Gleiche wie Java oder Perl)
Zum Beispiel:
console.log(/[01]/.test("023424")); // true
console.log(/[01]/.test("13424" )) ; // true
console.log(/[01]/.test("23424")); // false
Klammern ()
bedeutet, dass alles in den Klammern übereinstimmen muss, um wahr zu sein
Zum Beispiel:
console.log(/[01]/.test("013424")); // true
console.log(/[01]/. test("13424")); // false
console.log(/[01]/.test("230424")); // false
console.log(/[ 01]/.test("230142401 ")); // true
Quantifizierer
sind die gleichen wie Java. . Diese Uhr ist sehr gut. . Bruder, ich verwende immer gerne
Greedy |
Reluctant |
Possessive |
Meaning |
X? |
X?? |
X? |
X, once or not at all |
X* |
X*? |
X* |
X, zero or more times |
X |
X ? |
X |
X, one or more times |
X{n} |
X{n}? |
X{n} |
X, exactly n times |
X{n,} |
X{n,}? |
X{n,} |
X, at least n times |
X{n,m} |
X{n,m}? |
X{n,m} |
X, at least n but not more thanm times |
Ausdrucksobjektfunktionen
1) test Dies ist sehr einfach. Geben Sie einfach die zu testende Zeichenfolge in test(...) ein. Diese Funktion gibt true/false zurück. Stellt eine Übereinstimmung dar /unmatch
2) exec, diese Funktion gibt null zurück, wenn die passende Zeichenfolge nicht gefunden wird. Wenn sie gefunden wird, wird ein Array zurückgegeben, das die passenden Zeichenfolgen in der Reihenfolge enthält
3 ) Zeichenfolge .replace(Ausdruck1, Zeichenfolge1) Diese Funktion ersetzt den Übereinstimmungsteil in Ausdruck durch Zeichenfolge1. In Zeichenfolge1 kann die Klammergruppe
im vorherigen Ausdruck verwendet werden, um einen bestimmten Teil davon zu ersetzen. Beispielsweise kann „co-ol“.replace(/[w] -[w] /,„$2-$1“); //„ol-co“ bis $9
4)String verwendet werden. Ersetzen (Ausdruck, Funktion) Dies ist eine erweiterte Version und sehr leistungsfähig. Sie können jede gewünschte Ausgabe über eine Funktion definieren. Die spezifische Verwendung ist hier nicht aufgeführt, siehe
Klicken Sie hier, um den Link zu öffnen
Dynamische Generierung von Reg-Ausdrücken
Wenn die Dinge, die Sie in Reg-Exp verwenden möchten, nur von bekannt sind Zur Laufzeit kann diese Methode
angewendet werden, um reg exp zu generieren. Tatsächlich müssen Sie nur einen String verwenden, um das Erscheinungsbild von reg exp zu erstellen, und dann den Konstruktor von Exp verwenden. (Erwähnt am Anfang des Artikels)
Zum Beispiel:
var name = "lieb"
"oh, mein Schatz".replace(new Exp(name), "god"); // oh mein Gott
Aber wenn der Name Sonderzeichen enthält, die in regulären Ausdrücken verwendet werden können, geht die obige Methode oft schief.
In diesem Fall können wir also vor jedem Zeichen der Eingabezeichenfolge einen Backslash hinzufügen, zum Beispiel:
var name = df[]vxv;
var expName = name.replace("/[^/w/s]/g"," \$&");
"mein Name ist df[]vxv".replace(new Exp(name), "Bob"); // mein Name ist Bob