Start · Sprachen · JavaScript · Referenz · RegExp.prototype.test()

RegExp.prototype.test()

Methode

Die Methode <code>test()</code> von <code>RegExp</code>-Instanzen prüft, ob ein regulärer Ausdruck in einem String einen Treffer findet, und liefert einen Boolean.

Kategorie: method-property

Signatur

test(str)

Beschreibung

Die Methode test() von RegExp-Instanzen führt mit diesem regulären Ausdruck eine Suche nach einer Übereinstimmung zwischen dem regulären Ausdruck und einem angegebenen String aus. Gibt true zurück, wenn eine Übereinstimmung vorliegt; andernfalls false.

JavaScript-RegExp-Objekte sind zustandsbehaftet, wenn die Flags global oder sticky gesetzt sind (z. B. /foo/g oder /foo/y). Sie speichern einen lastIndex aus dem vorherigen Treffer. Intern kann test() damit genutzt werden, um über mehrere Treffer in einem Text zu iterieren (mit Capture-Gruppen).

Beschreibung

Verwenden Sie test(), wenn 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 eines Treffers oder -1 zurückgibt, wenn nichts gefunden wurde).

Um mehr 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) wird test(), wenn es mehrfach auf derselben globalen Regex-Instanz aufgerufen wird, über den vorherigen Treffer hinaus fortschreiten.

Parameter

Name Typ Default Beschreibung
$str Pflicht string Der String, gegen den der reguläre Ausdruck abgeglichen wird. Alle Werte werden in Strings umgewandelt (coerced to strings), sodass ein Weglassen oder Übergeben von undefined dazu führt, dass test() nach dem String "undefined" sucht, was selten das gewünschte Verhalten ist.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn eine Übereinstimmung zwischen dem regulären Ausdruck und dem String str vorliegt. Andernfalls false.

Beispiele

test() verwenden

const str = "hello world!";
const result = /^hello/.test(str);

console.log(result); // true

Meldung abhängig vom Testergebnis

function testInput(re, str) {
  const midString = re.test(str) ? "contains" : "does not contain";
  console.log(`${str} ${midString} ${re.source}`);
}

test() auf einer Regex mit dem "global"-Flag

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)

// Wichtig · Fallstricke

Solange test() true zurückgibt, wird lastIndex nicht zurückgesetzt – auch dann nicht, wenn ein anderer String getestet wird! Wenn test() false zurückgibt, wird die Eigenschaft lastIndex der aufrufenden Regex auf 0 zurückgesetzt.