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 nach einem Muster der regulären Ausdrucks in einem angegebenen String aus. Gibt true
zurück, wenn ein Treffer vorliegt; andernfalls false
.
JavaScript-RegExp
-Objekte sind zustandsbehaftet, wenn ihre global
- oder sticky
-Flags gesetzt sind (z.B. /foo/g
oder /foo/y
). Sie speichern einen lastIndex
aus dem vorherigen Treffer. Mit dieser internen Nutzung kann test()
verwendet werden, um über mehrere Treffer in einem Textstring zu iterieren (mit erfassten Gruppen).
Probieren Sie es aus
Syntax
test(str)
Parameter
str
-
Der String, gegen den der reguläre Ausdruck abgeglichen werden soll. Alle Werte werden in 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 ein Treffer zwischen dem regulären Ausdruck und dem String str
vorliegt. Anderenfalls false
.
Beschreibung
Verwenden Sie test()
, wann immer Sie wissen möchten, ob ein Muster in einem String gefunden wird. test()
gibt einen booleschen Wert zurück, im Gegensatz zur String.prototype.search()
-Methode (die den Index eines Treffers oder -1
, wenn kein Treffer gefunden wurde, zurückgibt).
Um mehr Informationen zu erhalten (jedoch mit langsamerer Ausführung), verwenden Sie die exec()
-Methode. (Dies ist ähnlich zur String.prototype.match()
-Methode.)
Wie bei exec()
(oder in Kombination damit) wird test()
, wenn es mehrfach auf derselben globalen regulären Ausdrucksinstanz aufgerufen wird, beim vorherigen Treffer fortschreiten.
Beispiele
Verwendung von test()
Ein einfaches Beispiel, das überprüft, ob "hello"
ganz am Anfang eines Strings enthalten ist und ein boolesches Ergebnis zurückgibt.
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() mit einem Regex mit dem "global"-Flag
Wenn ein Regex das global-Flag gesetzt hat, wird test()
den lastIndex
des Regexes weiterführen. (RegExp.prototype.exec()
führt auch die lastIndex
-Eigenschaft weiter.)
Weitere Aufrufe von test(str)
werden die Suche in str
ab lastIndex
fortsetzen. Die lastIndex
-Eigenschaft wird bei jedem Zurückgeben von true
durch test()
weiterhin steigen.
Hinweis: Solange test()
true
zurückgibt, wird lastIndex
nicht zurückgesetzt — sogar beim Testen eines anderen Strings!
Wenn test()
false
zurückgibt, wird die lastIndex
-Eigenschaft des aufrufenden Regexes auf 0
zurückgesetzt.
Das folgende Beispiel demonstriert 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