Es gibt zwei Möglichkeiten, regelmäßige Ausdrücke in JavaScript zu definieren.
1.Regexp -Konstruktor
var muster = new regexp ("[bc] at", "i");
Es empfängt zwei Parameter: eines ist das übereinstimmende Zeichenfolgenmuster und der andere ist die optionale Flag -Zeichenfolge.
2. wörtlich
var muster = /[bc] at /i;
Das passende Muster regulärer Ausdrücke unterstützt drei Flaggenzeichenfolgen:
G: Globaler, globaler Suchmodus, der auf alle Zeichenfolgen angewendet wird, anstatt die Suche zu stoppen, wenn die erste Übereinstimmung durchsucht wird.
I: Ingore -Fall, den Schreiben ignorieren, das heißt, das Muster- und String -Fall bei der Ermittlung von Übereinstimmungen ignorieren;
M: Mehrere Zeilen, Multiline -Muster, dh wenn die Suche das Ende einer Textlinie erreicht, wird weiterhin nach einer Übereinstimmung in der nächsten Zeile suchen.
Der Unterschied zwischen diesen beiden Methoden zur Erstellung regulärer Ausdrücke besteht darin, dass der reguläre Ausdruck Literal immer dieselbe Regexp -Instanz hat und jede neue Regexp -Instanz, die mit dem Konstruktor erstellt wurde, eine neue Instanz ist.
Metacharakter
Metacharacter sind Charaktere mit besonderen Bedeutungen. Die Hauptmetacharacter regelmäßiger Ausdrücke sind:
([{ / ^ $ |)? * +.
Metachars haben unterschiedliche Bedeutungen in verschiedenen Kombinationen.
Vordefinierte Sonderzeichen
Charakterklasse einfache Klasse
Im Allgemeinen hat ein regulärer Ausdruck ein Zeichen, das einem Zeichen in einer Zeichenfolge entspricht, aber wir können [] eine einfache Klasse erstellen, um eine Klasse von Zeichen darzustellen, die zu einer bestimmten Funktion entspricht. Zum Beispiel:
[ABC] kann die Zeichen in den Klammern A, B, C oder einer beliebigen Kombination davon abgleichen.
Rückwärtsklasse
Da [] eine Klasse erstellen kann, werden Sie natürlich an die entsprechende Klasse denken, die den Inhalt in Klammern nicht enthält. Diese Klasse wird als umgekehrte Klasse bezeichnet. Zum Beispiel kann [^abc] Zeichen, die nicht a oder b oder c sind, übereinstimmen.
Umfangskategorie
Manchmal ist es zu mühsam, die Zeichen nacheinander zu entsprechen, und die Art der Übereinstimmung ist gleich. Zu diesem Zeitpunkt können wir die Verbindungslinie "-" verwenden, um den Inhalt zwischen einem bestimmten geschlossenen Intervall darzustellen. Beispielsweise kann die Übereinstimmung mit allen Kleinbuchstaben wie folgt [AZ] verwenden:
Die Übereinstimmung mit allen 0 bis 9 kann mit [0-9] ausgedrückt werden:
Vordefinierte Klassen
Für mehrere oben erstellte Klassen liefern uns reguläre Ausdrücke mehrere häufig verwendete vordefinierte Klassen, um gemeinsame Zeichen zu entsprechen, wie folgt:
| Charakter | Äquivalente Kategorie | Bedeutung |
| . | [^/n/r] | Passen Sie alle Charaktere mit Ausnahme der Kutschenrückgabe und Linienbrüche an |
| /D | [0-9] | Zahlenzeichen |
| /D | [^0-9] | Nicht numerische Charaktere |
| /S | [/t/n/x0b/f/r] | Whitespace -Charaktere |
| /S | [^/t/n/x0b/f/r] | Nicht-Whitespace-Charaktere |
| /w | [A-Za-Z_0-9] | Wortzeichen (Buchstaben, Zahlen und Unterstriche) |
| /W | [^a-za-z_0-9] | Nicht-Wort-Charaktere |
Quantor
Die obige Methode entspricht den Zeichen für die Zeichen. Wenn ein Zeichen mehrfach nacheinander erscheint, ist es sehr problematisch, gemäß der obigen Methode übereinzustimmen. Daher fragen wir uns, ob es andere Methoden gibt, die direkt mit Zeichen übereinstimmen können, die wiederholt erscheinen. Regelmäßige Ausdrücke liefern uns einige Quantifizierer wie folgt:
| Charakter | Bedeutung |
| ? | Null oder einmal (bis einmal) |
| + | Erscheinen ein oder mehrmals (mindestens einmal) |
| * | Null oder mehrere Vorkommen (zu jeder Zeit) |
| {N} | Nimon erscheinen |
| {n, m} | Erscheinen n times n Times |
| {N,} | Mindestens n -mal erscheinen |
Gierige und nicht greedische Modi
Sollte N oder M für die passende Methode von {n, m} abgestimmt werden? Dies beinhaltet das Problem der Matching -Muster. Standardmäßig sind Quantifizierer so viele passende Zeichen wie möglich, was beispielsweise als Greedy -Modus bezeichnet wird:
var num = '123456789'; num.match (// d {2,4}/g); // [1234], [5678], [9]Für den richtigen und nicht greedischen Modus müssen Sie nur hinzufügen "?" Nach dem Quantifizierer. Zum Beispiel {n, m}?, Wie folgt mit den geringsten Zeichen übereinstimmen:
var num = '123456789'; num.match (// d {2,4}?/g); // [12], [34], [56], [78], [9]Gruppierung
Quantifizierer können nur mehrmals für ein einzelnes Zeichen angepasst werden. Was ist, wenn wir mehrmals zu einem bestimmten Satz von Zeichen übereinstimmen wollen? In regulären Ausdrücken können Klammern eine Saite als Ganzes als Gruppe definieren.
Wenn wir mit dem Wort, das Apple erscheint, übereinstimmen möchten, können wir wie folgt (Apple) {4} miteinander übereinstimmen:
Wenn Sie mit Apple oder Orange übereinstimmen möchten, können Sie das Rohrzeichen "|" einfügen, zum Beispiel:
(Apple | Orange) {4}
Wenn mehrere Klammern in einem regulären Ausdruck unter Verwendung von Gruppierung angezeigt werden, d. H. Mehrere Gruppen, gruppiert und nummeriert das Matching -Ergebnis auch die Übereinstimmungen, beispielsweise:
(Apple)/D+(Orange)
Wenn wir bestimmte Pakete nicht erfassen wollen, müssen wir nur ein Fragezeichen und einen Dickdarm unmittelbar vor den Klammern des Pakets befolgen, z. B.:
(?: Apfel)/D+(Orange)
Grenze
Regelmäßige Ausdrücke bieten uns auch mehrere häufig verwendete Grenz -Matching -Zeichen wie:
| Charakter | Bedeutung |
| ^ | Beginnen Sie mit xx |
| $ | Enden mit xx |
| /B | Wortgrenze, bezieht sich auf andere Zeichen als [a-za-z_0-9] |
| /B | Nicht-Wort-Grenze |
Die Wortgrenze entspricht einer Position, eine Seite dieser Position sind die Zeichen, die das Wort ausmachen, aber die andere Seite ist die Anfangs- oder Endposition eines Nicht-Wort-Zeichens oder einer String.
Vorschau
Lookahead wird verwendet, um das nächste Ereignis eines bestimmten Zeichensatzes zu entsprechen oder nicht.
| Ausdruck | Bedeutung |
| exp1 (? = exp2) | Auf das Match folgen Exp2s Exp1 |
| exp1 (?! exp2) | Match EXP1, das danach nicht exp2 ist |
Siehe ein Beispiel:
Apfel (? = Orange)
(/Apple(?=orange)/).test(''Appleorange123 '); // true (/apple(?=orange)/).test('Applepear345 '); //FALSCHSchauen wir uns ein anderes Beispiel an:
Apfel (?! Orange)
(/Apple(?!Orange)/).test(''Appleorange123 '); // false (/apple(?!Orange)/).test('Applepear345 '); //WAHRDer obige Artikel ist ein Klischee über die reguläre Expressionssyntax von JavaScript. Dies ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.