English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Skizze über RegExp - JavaScript RegExp-Objekt

Übersicht

Der Konstruktor RegExp erstellt ein Objekt für reguläre Ausdrücke, das mit dem Muster Text abgleicht.

Für eine Einführung in reguläre Ausdrücke lesen Sie bitte das Kapitel 'Reguläre Ausdrücke' im JavaScript-Leitfaden.

Syntax

Text und Konstruktoren sind möglich:
/pattern/flags new RegExp(pattern [, flags])

Parameter

pattern
Text des regulären Ausdrucks
flags
Wenn angegeben, kann der Flagge die beliebige Kombination der folgenden Werte haben:

g
Globale Übereinstimmung
i
Groß-/Kleinschreibung ignorieren
m
Mehrzeilenmodus; Lassen Sie die Anfangs- und Endzeichen (^ und $) im Mehrzeilenmodus arbeiten (z.B. können ^ und $ die Anfangs- und Endpositionen jeder Zeile in der Zeichenkette matchen, die durch \n oder \r getrennt ist, und nicht nur am Anfang und am Ende der gesamten Eingabezeichenkette).
u
Unicode. Die Muster werden als Sequenz von Unicode-Codepunkten (code points) betrachtet.
y
Viskosität; In der Zielzeichenkette wird nur von der durch das lastIndex-Attribut des regulären Ausdrucks angegebenen Anzeigeposition ausgegangen (und es wird nicht versucht, von jeder nachfolgenden Indexposition aus zu passen).
Beschreibung
Es gibt zwei Methoden, um ein reguläres Objekt zu erstellen: Literale und Konstruktor. Um eine Zeichenkette darzustellen, wird bei der literalen Form keine Anführungszeichen verwendet, während die Parameter, die an den Konstruktor übergeben werden, mit Anführungszeichen übergeben werden. Die folgende Ausdrucksform erstellt den gleichen regulären Ausdruck:

/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

Wenn ein Ausdruck zugewiesen wird, stellt der literale Ausdruck den Kompilationsstatus des regulären Ausdrucks bereit und wird bei einem konstanten regulären Ausdruck verwendet. Zum Beispiel wird der reguläre Ausdruck nicht in jeder Iteration neu kompiliert (recompiled), wenn Sie in einer Schleife einen regulären Ausdruck mit einem Literale konstruieren.
Der Konstruktor des regulären Ausdrucksobjekts, wie new RegExp('ab}}+c') bietet die Laufzeitkompilierung (runtime compilation) von regulären Ausdrücken. Wenn Sie wissen, dass das Muster sich ändern wird oder wenn Sie nicht im Voraus wissen, was für ein Muster es ist, sondern es von einer anderen Quelle erhalten, wie Benutzerinput, können Sie den Konstruktor verwenden.
von ECMAScript 6Beginnend mit, wenn der erste Parameter ein regulärer Ausdruck und der zweite Flaggenparameter vorhanden ist, new RegExp(/ab+c/, 'i') wirft nicht mehr einen TypeError ("Unterstützung für Flaggen von anderen regulären Ausdrücken nicht verfügbar"), sondern erstellt anstatt dessen einen neuen regulären Ausdruck mit diesen Parametern.

Beim Erstellen von regulären Ausdrücken durch den Konstruktor ist das Regelsystem für die Escape-Zeichen zu verwenden (durch den Backslash \ vor dem Zeichen). Zum Beispiel sind folgende äquivalent:

var re = new RegExp("\\w+");
var re = /\w+/;

Reguläre Ausdrücke mit Literaleintrag definieren
var expression = /pattern/ flags;
pattern kann jeder einfache oder komplexe reguläre Ausdruck sein
flage kennzeichnet das Verhalten der regulären Ausdrucks 1.g: Globales Muster, stoppt nicht nach dem ersten Übereinstimmungsvorfall 2.i: Groß- und Kleinschreibung ignorieren 3.m: Mehrzeiliges Muster
Beispiel:

var pattern1 = /at/g; //Alle "at" im String matchen
var pattern2 = /.valueOf());/i; //Ersten "bat" oder "cat" matchen, ohne Groß- und Kleinschreibung zu unterscheiden
var pattern3 = /.at/gi; //Globale Übereinstimmung mit "at" endenden dreistelligen Zeichenfolgen. Ohne Unterschied zwischen Groß- und Kleinschreibung

Alle Meta-Zeichen, die im Muster verwendet werden, müssen escaped sein. Meta-Zeichen in regulären Ausdrücken umfassen:([{\^$|?*+.}])
Beispiel:

var pattern4 = /\[bc\]at/i; //Ersten "[bc]at" matchen, ohne Groß- und Kleinschreibung zu unterscheiden

Verwendet den RegExp-Konstruktur, um2Parameter, Parameter1:Zu matchende Zeichenkettenmuster, Parameter2:Optionalen Flaggenverhalten
Beispiel:

var pattern5 = new RegExp("[bc]at", "i");

Hinweis: Da die Musterparameter des RegExp-Konstruktors alle Zeichenketten sind, müssen in einigen Fällen Zeichenketten doppelt escaped werden. Alle Meta-Zeichen müssen doppelt escaped sein

Beispiel:
Buchstabenkette        Äquivalent der Zeichenkette
/\[bc\]at/      \"\\[bc\\]at\"
/.at/        \"\\.at\"
/Name/\Alter/    "Name\\/Alter"
/\d.\d{1,2}/    \d.\d{1,2\"
/\w\\hello\\123/ \w\\hello\\123"

"}}3Anmerkung: Der Unterschied zwischen der Verwendung von Literale und Instanziierung zur Erstellung regulärer Ausdrücke ist, dass Literale immer denselben RegExp-Instanz teilen (ECMAScript

) Jeder neue RegExp-Instanz, der mit dem Konstruktor erstellt wird, ist eine neue Instanz.

console.log(pattern5RegExp-Instanzattribute //.global);
console.log(pattern5false Ob das g-Symbol gesetzt ist //.ignoreCase);
console.log(pattern5true Ob das i-Symbol gesetzt ist //.multiline);
console.log(pattern5false Ob das m-Symbol gesetzt ist //.lastIndex);
console.log(pattern50 Der Startposition, an der die nächste Übereinstimmung gesucht wird //.source);

[bc]at Die Zeichenkette des regulären Ausdrucks

console.log(pattern5Vererbte Eigenschaften // /.valueOf());/[bc]at Die Zeichenkette des regulären Ausdrucks
console.log(pattern5.toString()); // /.valueOf());/[bc]at Die Zeichenkette des regulären Ausdrucks
console.log(pattern5.toLocaleString()); // /.valueOf());/[bc]at Die Zeichenkette des regulären Ausdrucks

i Die literale Darstellung des regulären Ausdrucks
RegExp-Instanzmethoden

Methode eins: exec(), akzeptiert ein Argument, das eine Musterzeichenkette ist. Gibt ein Array mit Informationen zur ersten Übereinstimmung zurück,在没有的情况下返回null,返回的数组 enthält zwei Eigenschaften index(der Ort der Übereinstimmung im Text) und input(das auf das reguläre Ausdruck angewendete Text).
var pattern6 var text = "huang jin liang shi ge hao ren";63= new RegExp("huang( jin liAng( shi ge hao ren)?)&#
;", "i");6var matches = pattern
.exec(text); 
//console.log(matches);
// [ 'huang jin liang shi ge hao ren',
// ' jin liang shi ge hao ren',
// ' shi ge hao ren',
// index: 0,
Methode zwei: test(), akzeptiert ein Argument, das eine Musterzeichenkette ist. Gibt true zurück, wenn das Muster mit dem Argument übereinstimmt, sonst false1 Eingabe: 'huang jin liang shi ge hao ren' ]
var pattern7 = "cat, bat, sat";
sat1 var matches7= pattern1);
.exec(text1); //= new RegExp(".at", "gm");
var pattern8 = new RegExp(".at")
sat2 var matches8= pattern1);
.exec(text2); //= new RegExp(".at", "gm");
sat3 var matches8= pattern1);
.exec(text3); //cat
sat4 var matches8= pattern1);
.exec(text4); //bat
sat5 var matches8= pattern1);
.exec(text5); //console.log(matches

null

Methode zwei: test(), akzeptiert ein Argument, das eine Musterzeichenkette ist. Gibt true zurück, wenn das Muster mit dem Argument übereinstimmt, sonst false2 = "000-00-0000";
var pattern9 = new RegExp("\\d{3}-2}-4}
console.log(pattern9.test(text2))
console.log(text2);
if (pattern9.test(text2)) {
console.log("Match erfolgreich");
} else {
console.log("Match fehlgeschlagen");
}

Konstruktionsattribut (von einigen Browsern nicht unterstützt)
Lange Attributnamen    Kurze Attributnamen Beschreibung
input      $_    letztes zu matchendes Zeichenfolge
lastMatch    $&    letztes Match
lastParen    $+    letzter Kapturengruppe
leftContext    $`    Text vor dem letzten Match im Eingabezeichenfolge
multiline    $*    bool, ob mehrzeiliger Modus
rightContext $'    Text nach dem letzten Match im Eingabezeichenfolge
        $1~$9 . verwendet, um den n-ten Kapturengruppe zu speichern

In ECMAScript Einschränkungen
1. Matchstrings anfang und ende Anker \A und \Z
2. Vorwärtssuche
3. Union und Intersection Klassen
4. Atomare Gruppe
5. Unicode Unterstützung (außer für einzelne Zeichen)
6. benannte Kapturengruppe
7. s und x Übereinstimmungsmuster
8. bedingte Übereinstimmung
9. regulärer Ausdruck Anmerkung

Ich habe gerade eine Methode zur Übereinstimmung mehrerer Zeilen in js entdeckt

<script>
var s = "Please yes\nmake my day!";
alert(s.match(/yes.*day/));
// Gibt null zurück
alert(s.match(/yes[^]*day/));
// Gibt 'yes\nmake my day' zurück
</script>

Leider ist editplus nicht verwendbar, oft ist dw bequemer.

Möglicherweise gefällt Ihnen