A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.matchAll below:

RegExp.prototype[Symbol.matchAll]() - JavaScript | MDN

RegExp.prototype[Symbol.matchAll]()

Baseline Widely available

Die Methode [Symbol.matchAll]() von RegExp-Instanzen gibt an, wie String.prototype.matchAll verhalten sollte.

Probieren Sie es aus
class MyRegExp extends RegExp {
  [Symbol.matchAll](str) {
    const result = RegExp.prototype[Symbol.matchAll].call(this, str);
    if (!result) {
      return null;
    }
    return Array.from(result);
  }
}

const re = new MyRegExp("-\\d+", "g");
console.log("2016-01-02|2019-03-07".matchAll(re));
// Expected output: Array [Array ["-01"], Array ["-02"], Array ["-03"], Array ["-07"]]
Syntax
regexp[Symbol.matchAll](str)
Parameter
str

Ein String, der das Ziel des Abgleichs darstellt.

Rückgabewert

Ein iterierbares Iterator-Objekt (das nicht neu gestartet werden kann) der Übereinstimmungen. Jede Übereinstimmung ist ein Array mit derselben Struktur wie der Rückgabewert von RegExp.prototype.exec().

Beschreibung

Diese Methode wird intern in String.prototype.matchAll() aufgerufen. Zum Beispiel liefern die folgenden zwei Beispiele dasselbe Ergebnis.

"abc".matchAll(/a/g);

/a/g[Symbol.matchAll]("abc");

Ähnlich wie [Symbol.split]() beginnt [Symbol.matchAll]() mit der Verwendung von [Symbol.species], um ein neues Regex zu konstruieren, um zu vermeiden, dass das ursprüngliche Regexp in irgendeiner Weise mutiert wird. lastIndex beginnt mit dem Wert des ursprünglichen Regex.

const regexp = /[a-c]/g;
regexp.lastIndex = 1;
const str = "abc";
Array.from(str.matchAll(regexp), (m) => `${regexp.lastIndex} ${m[0]}`);
// [ "1 b", "1 c" ]

Die Validierung, dass die Eingabe ein globales Regex ist, erfolgt in String.prototype.matchAll(). [Symbol.matchAll]() validiert die Eingabe nicht. Wenn das Regex nicht global ist, gibt der zurückgegebene Iterator das exec()-Ergebnis einmal zurück und gibt dann undefined zurück. Wenn das Regexp global ist, wird jedes Mal, wenn die next()-Methode des zurückgegebenen Iterators aufgerufen wird, das Regex' exec() aufgerufen und das Ergebnis zurückgegeben.

Wenn das Regex sticky und global ist, führt es weiterhin Sticky-Matches durch — das heißt, es matcht keine Vorkommen nach dem lastIndex.

console.log(Array.from("ab-c".matchAll(/[abc]/gy)));
// [ [ "a" ], [ "b" ] ]

Wenn die aktuelle Übereinstimmung ein leerer String ist, wird der lastIndex dennoch vorgerückt. Wenn das Regex das u-Flag hat, wird um einen Unicode-Codepoint vorgerückt; andernfalls um einen UTF-16-Codepoint.

console.log(Array.from("😄".matchAll(/(?:)/g)));
// [ [ "" ], [ "" ], [ "" ] ]

console.log(Array.from("😄".matchAll(/(?:)/gu)));
// [ [ "" ], [ "" ] ]

Diese Methode existiert, um das Verhalten von matchAll() in RegExp-Unterklassen anzupassen.

Beispiele Direkter Aufruf

Diese Methode kann fast auf dieselbe Weise wie String.prototype.matchAll() verwendet werden, abgesehen von dem unterschiedlichen Wert von this und der unterschiedlichen Reihenfolge der Argumente.

const re = /\d+/g;
const str = "2016-01-02";
const result = re[Symbol.matchAll](str);

console.log(Array.from(result, (x) => x[0]));
// [ "2016", "01", "02" ]
Verwendung von [Symbol.matchAll]() in Unterklassen

Unterklassen von RegExp können die [Symbol.matchAll]()-Methode überschreiben, um das Standardverhalten zu ändern.

Zum Beispiel, um ein Array anstelle eines Iterator zurückzugeben:

class MyRegExp extends RegExp {
  [Symbol.matchAll](str) {
    const result = RegExp.prototype[Symbol.matchAll].call(this, str);
    return result ? Array.from(result) : null;
  }
}

const re = new MyRegExp("(\\d+)-(\\d+)-(\\d+)", "g");
const str = "2016-01-02|2019-03-07";
const result = str.matchAll(re);

console.log(result[0]);
// [ "2016-01-02", "2016", "01", "02" ]

console.log(result[1]);
// [ "2019-03-07", "2019", "03", "07" ]
Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4