RegExp.prototype.test()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die test()
-Methode von RegExp
-Instanzen führt eine Suche mit diesem regulären Ausdruck nach einer Übereinstimmung zwischen einem regulären Ausdruck und einem angegebenen String aus. Gibt true
zurück, wenn es eine Übereinstimmung gibt; andernfalls false
.
JavaScript-RegExp
-Objekte sind zustandsbehaftet, wenn sie die global
- oder sticky
-Flags gesetzt haben (z.B. /foo/g
oder /foo/y
). Sie speichern einen lastIndex
von der vorherigen Übereinstimmung. Durch die interne Nutzung dieser Information kann test()
verwendet werden, um über mehrere Übereinstimmungen in einem Textstring zu iterieren (mit Erfassungsgruppen).
Probieren Sie es aus
Syntax
test(str)
Parameter
str
-
Der String, gegen den der reguläre Ausdruck abgeglichen wird. Alle Werte werden zu Strings umgewandelt, daher führt das Weglassen oder Übergeben von
undefined
dazu, dasstest()
nach dem String"undefined"
sucht, was selten gewünscht ist.
Rückgabewert
true
, wenn es eine Übereinstimmung zwischen dem regulären Ausdruck und dem String str
gibt. Andernfalls false
.
Beschreibung
Verwenden Sie test()
, wann immer Sie wissen möchten, ob ein Muster in einem String gefunden wird. test()
gibt einen Boolean zurück, im Gegensatz zur Methode String.prototype.search()
(die den Index einer Übereinstimmung oder -1
zurückgibt, wenn nichts gefunden wird).
Um genauere Informationen zu erhalten (aber mit langsamerer Ausführung), verwenden Sie die Methode exec()
. (Dies ist ähnlich zur Methode String.prototype.match()
.)
Wie bei exec()
(oder in Kombination damit), sorgt test()
, das mehrmals auf derselben globalen Regulären-Ausdruck-Instanz aufgerufen wird, dafür, dass weiter als die vorherige Übereinstimmung vorangeschritten wird.
Beispiele
Verwendung von test()
Dieses Beispiel testet, ob "hello"
am Anfang eines Strings enthalten ist, und gibt das Ergebnis als Boolean zurück.
const str = "hello world!";
const result = /^hello/.test(str);
console.log(result); // true
Das folgende Beispiel protokolliert eine Nachricht, die vom Erfolg des Tests abhängt:
function testInput(re, str) {
const midString = re.test(str) ? "contains" : "does not contain";
console.log(`${str} ${midString} ${re.source}`);
}
Verwendung von test() bei einem Regex mit dem "global"-Flag
Wenn ein Regex das global-Flag gesetzt hat, wird test()
den lastIndex
des Regex voranschreiten lassen. (RegExp.prototype.exec()
erhöht ebenfalls die lastIndex
-Eigenschaft.)
Weitere Aufrufe von test(str)
werden die Suche in str
ab dem lastIndex
fortsetzen. Die lastIndex
-Eigenschaft wird weiter zunehmen, jedes Mal, wenn test()
true
zurückgibt.
Hinweis: Solange test()
true
zurückgibt, wird der lastIndex
nicht zurückgesetzt—auch wenn ein anderer String getestet wird!
Wenn test()
false
zurückgibt, wird die lastIndex
-Eigenschaft des aufrufenden Regex auf 0
zurückgesetzt.
Das folgende Beispiel zeigt dieses Verhalten:
const regex = /foo/g; // the "global" flag is set
// regex.lastIndex is at 0
regex.test("foo"); // true
// regex.lastIndex is now at 3
regex.test("foo"); // false
// regex.lastIndex is at 0
regex.test("barfoo"); // true
// regex.lastIndex is at 6
regex.test("foobar"); // false
// regex.lastIndex is at 0
regex.test("foobarfoo"); // true
// regex.lastIndex is at 3
regex.test("foobarfoo"); // true
// regex.lastIndex is at 9
regex.test("foobarfoo"); // false
// regex.lastIndex is at 0
// (...and so on)
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-regexp.prototype.test |
Browser-Kompatibilität
BCD tables only load in the browser