Heim  >  Artikel  >  Web-Frontend  >  Vergleich der Unterschiede zwischen test(), exec() und match() der regulären js-Ausdrücke (mit Beispielen)

Vergleich der Unterschiede zwischen test(), exec() und match() der regulären js-Ausdrücke (mit Beispielen)

不言
不言Original
2018-08-20 15:11:483581Durchsuche

Der Inhalt dieses Artikels befasst sich mit den Unterschieden und Vergleichen zwischen test (), exec () und match () von regulären js-Ausdrücken (mit Beispielen). Er hat einen gewissen Referenzwert und Freunde, die ihn brauchen. Ich hoffe, es wird Ihnen hilfreich sein.

1. Reguläre Ausdrücke werden normalerweise in

zwei String-Methoden verwendet: search(), replace()

zwei reguläre Ausdrucksmethoden: test(), exec()

search()-Methode: verwendet einen regulären Ausdruck als Parameter und gibt die Startposition des ersten passenden Teilstrings zurück. Wenn kein passender Teilstring vorhanden ist, wird -1 zurückgegeben.

replace()-Methode: führt Abruf- und Ersetzungsvorgänge durch. Ihr erster Parameter ist ein regulärer Ausdruck und der zweite Parameter ist die zu ersetzende Zeichenfolge oder der Abschluss.

test()-Methode: wird verwendet, um zu erkennen, ob eine Zeichenfolge mit einem bestimmten Muster übereinstimmt. Wenn die Zeichenfolge übereinstimmenden Text enthält, gibt sie „true“ zurück, andernfalls gibt sie „false“ zurück.

exec()-Methode: wird verwendet, um Übereinstimmungen regulärer Ausdrücke in einer Zeichenfolge abzurufen. Diese Funktion gibt ein Array zurück, das die passenden Ergebnisse enthält. Wenn keine Übereinstimmung gefunden wird, ist der Rückgabewert null.

match()-Methode: Der einzige Parameter ist der reguläre Ausdruck. Sein Verhalten hängt vom Flag dieses regulären Ausdrucks ab ein Array, das die Übereinstimmungen enthält, die in der Zeichenfolge erscheinen. Wenn der reguläre Ausdruck das g-Flag nicht enthält, gibt er auch ein Array zurück, dessen erstes Element die übereinstimmende Zeichenfolge ist und die übrigen Elemente die einzelnen Gruppen im regulären Ausdruck sind. Hinweis: Im globalen Suchmodus liefert match() weder Informationen über den Text, der mit dem Unterausdruck übereinstimmt, noch deklariert es die Position jedes übereinstimmenden Teilstrings. Wenn Sie diese global abgerufenen Informationen benötigen, können Sie RegExp.exec() verwenden.

split()-Methode: kann den Mustervergleich unterstützen.

2. Das RegExp-Objekt definiert zwei Methoden für den Mustervergleich, sie sind exec() und test()

1. Die Methode exec() von RegExp und die Methode match() von String sind sehr ähnlich Wenn keine Übereinstimmung gefunden wird, wird ein Array zurückgegeben. Das erste Element dieses Arrays enthält den übereinstimmenden Ausdruck Gruppen. Darüber hinaus enthält das Indexattribut des regulären Ausdrucksobjekts auch die Position der Zeichenfolge, an der die Übereinstimmung stattgefunden hat, und das Eingabeattribut verweist auf die abgerufene Zeichenfolge.
Wenn der reguläre Ausdruck das g-Flag hat, wird die lastIndex-Eigenschaft des Objekts auf die Position unmittelbar nach der übereinstimmenden Zeichenfolge gesetzt und der Abruf gestartet. Wenn exec() keine Übereinstimmung findet, wird die lastIndex-Eigenschaft auf zurückgesetzt 0. Dieses spezielle Verhalten ermöglicht es Ihnen, exec() wiederholt aufzurufen, um alle regulären Ausdrucksübereinstimmungen in einer Zeichenfolge zu durchlaufen.

2. Der test()-Parameter des RegExp-Objekts ist eine Zeichenfolge. Wenn diese Zeichenfolge eine Übereinstimmung mit dem regulären Ausdruck enthält, gibt sie „true“ zurück, andernfalls gibt sie „false“ zurück.
Wenn ein regulärer Ausdruck mit dem g Flag Wenn ein Ausdruck die test()-Methode aufruft, verhält er sich genauso wie exec(), d. h. er ruft die spezifische Zeichenfolge ab lastIndex ab und setzt lastIndex bei einer Übereinstimmung auf die Position des unmittelbar folgenden Zeichens diese Übereinstimmung, sodass wir die Methode test() verwenden können, um die Zeichenfolge zu durchlaufen.

test

test gibt einen booleschen Wert zurück, um herauszufinden, ob das Muster in der entsprechenden Zeichenfolge vorhanden ist.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.test(str)); // true

exec

exec findet die aktuellen Übereinstimmungsergebnisse und gibt sie als Array zurück.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
var arr = reg.exec(str);

Wenn das Muster nicht existiert, ist arr null, andernfalls ist arr immer ein Array der Länge 1, dessen Wert die aktuelle Übereinstimmung ist. arr hat auch drei Attribute: index ist die Position der aktuellen Übereinstimmung; lastIndex ist die Endposition der aktuellen Übereinstimmung (Index + Länge der aktuellen Übereinstimmung). Im obigen Beispiel ist die Eingabe str.

Die exec-Methode wird durch den Parameter g beeinflusst. Wenn g angegeben ist, beginnt die Suche beim nächsten Aufruf von exec beim letzten passenden lastIndex.

var str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);

Beide oben genannten Ausgänge sind 1a. Schauen Sie sich nun den angegebenen Parameter g an:

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);

Der erste oben gibt 1a aus und der zweite gibt 1b aus.

match

hjvar str = "1a1b1c";
var reg = new RegExp("1.", "");
alert(str.match(reg));

e-Methode ist ein bisschen wie exec, aber: exec ist eine Methode des RegExp-Objekts; math ist eine Methode des String-Objekts. Es gibt einen weiteren Unterschied zwischen den beiden, nämlich die Interpretation des e-Parameters g.

Wenn Parameter g angegeben ist, gibt match alle Ergebnisse auf einmal zurück.

var str = "1a1b1c";
var reg = new RegExp("1.", "g");
alert(str.match(reg));
//alert(str.match(reg)); // 此句同上句的结果是一样的

Das Ergebnis ist ein Array mit drei Elementen: 1a, 1b, 1c. Die

compile-Methode kompiliert den regulären Ausdruck in ein internes Format und führt so schneller aus.

var reg = new RegExp();
reg.compile("[a-z]{5}", "g");
alert(reg.test("cftea"));

Wenn derselbe reguläre Ausdruck mehrmals verwendet wird (z. B. in einer Schleife), ist der Effekt erheblich.

Verwandte Empfehlungen:

JS Basic Series Regular Expressions

Wie man das Backtracking regulärer Ausdrücke in js richtig versteht

Das obige ist der detaillierte Inhalt vonVergleich der Unterschiede zwischen test(), exec() und match() der regulären js-Ausdrücke (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn