Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

RegExp.prototype.test()

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Die Methode test() von RegExp-Instanzen prüft, ob ein regulärer Ausdruck mit einer angegebenen Zeichenfolge übereinstimmt. Sie 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 in lastIndex, an welcher Position die vorherige Übereinstimmung endete. Dadurch kann test() verwendet werden, um mehrere Übereinstimmungen in einer Zeichenfolge zu durchlaufen (auch mit Erfassungsgruppen).

Probieren Sie es aus

const str = "table football";

const regex = /fo+/;
const globalRegex = /fo+/g;

console.log(regex.test(str));
// Expected output: true

console.log(globalRegex.lastIndex);
// Expected output: 0

console.log(globalRegex.test(str));
// Expected output: true

console.log(globalRegex.lastIndex);
// Expected output: 9

console.log(globalRegex.test(str));
// Expected output: false

Syntax

js
test(str)

Parameter

str

Die Zeichenfolge, mit der der reguläre Ausdruck abgeglichen wird. Alle Werte werden in Zeichenfolgen umgewandelt. Wenn Sie den Parameter weglassen oder undefined übergeben, sucht test() daher nach der Zeichenfolge "undefined" – was nur selten beabsichtigt ist.

Rückgabewert

true, wenn der reguläre Ausdruck mit der Zeichenfolge str übereinstimmt. Andernfalls false.

Beschreibung

Verwenden Sie test(), wenn Sie wissen möchten, ob ein Muster in einer Zeichenfolge vorkommt. Anders als die Methode String.prototype.search(), die den Index einer Übereinstimmung oder bei ausbleibender Übereinstimmung -1 zurückgibt, liefert test() einen booleschen Wert.

Wenn Sie weitere Informationen benötigen, verwenden Sie die Methode exec(). Ihre Ausführung ist allerdings langsamer. (Sie ähnelt der Methode String.prototype.match().)

Wie bei exec() – oder in Kombination damit – setzt jeder weitere Aufruf von test() auf derselben globalen Instanz eines regulären Ausdrucks die Suche hinter der vorherigen Übereinstimmung fort.

Beispiele

test() verwenden

Dieses Beispiel prüft, ob "hello" ganz am Anfang einer Zeichenfolge steht, und gibt einen booleschen Wert zurück.

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

console.log(result); // true

Das folgende Beispiel gibt abhängig vom Ergebnis der Prüfung eine Meldung aus:

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

test() mit einem regulären Ausdruck mit dem Flag „global“ verwenden

Wenn bei einem regulären Ausdruck das Flag „global“ gesetzt ist, erhöht test() dessen lastIndex. (Auch RegExp.prototype.exec() erhöht die Eigenschaft lastIndex.)

Weitere Aufrufe von test(str) setzen die Suche in str ab lastIndex fort. Die Eigenschaft lastIndex steigt mit jedem Aufruf von test(), der true zurückgibt.

Hinweis: Solange test() true zurückgibt, wird lastIndex nicht zurückgesetzt – auch dann nicht, wenn eine andere Zeichenfolge geprüft wird!

Wenn test() false zurückgibt, wird die Eigenschaft lastIndex des verwendeten regulären Ausdrucks auf 0 zurückgesetzt.

Das folgende Beispiel veranschaulicht dieses Verhalten:

js
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

Spezifikation
ECMAScript® 2027 Language Specification
# sec-regexp.prototype.test

Browser-Kompatibilität

Siehe auch