String.prototype.match()
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 match()
-Methode von String
-Werten ruft das Ergebnis des Abgleichs dieses Strings mit einem regulären Ausdruck ab.
Probieren Sie es aus
const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";
const regex = /[A-Z]/g;
const found = paragraph.match(regex);
console.log(found);
// Expected output: Array ["T", "I"]
Syntax
match(regexp)
Parameter
regexp
-
Ein Objekt vom Typ regulärer Ausdruck oder ein beliebiges Objekt, das eine
Symbol.match
-Methode hat.Falls
regexp
keinRegExp
-Objekt ist und keineSymbol.match
-Methode hat, wird es implizit durchnew RegExp(regexp)
in eineRegExp
umgewandelt.Falls Sie keinen Parameter angeben und die
match()
-Methode direkt verwenden, erhalten Sie einArray
mit einem leeren String:[""]
, da dies gleichbedeutend mitmatch(/(?:)/)
ist.
Rückgabewert
Ein Array
, dessen Inhalt von der Anwesenheit oder Abwesenheit des globalen (g
) Flags abhängt, oder null
, wenn keine Übereinstimmungen gefunden werden.
- Wenn das
g
-Flag verwendet wird, werden alle Ergebnisse, die dem gesamten regulären Ausdruck entsprechen, zurückgegeben, aber keine erfassenden Gruppen. - Wenn das
g
-Flag nicht verwendet wird, wird nur die erste vollständige Übereinstimmung und die damit verbundenen erfassenden Gruppen zurückgegeben. In diesem Fall gibtmatch()
dasselbe Ergebnis wieRegExp.prototype.exec()
zurück (ein Array mit einigen zusätzlichen Eigenschaften).
Beschreibung
Die Implementierung von String.prototype.match
führt im Wesentlichen den Aufruf der Symbol.match
-Methode des Arguments mit dem String als erstem Parameter durch. Die eigentliche Implementierung stammt von RegExp.prototype[Symbol.match]()
.
- Falls Sie wissen möchten, ob ein String mit einem regulären Ausdruck
RegExp
übereinstimmt, verwenden SieRegExp.prototype.test()
. - Wenn Sie nur die erste gefundene Übereinstimmung möchten, könnten Sie stattdessen
RegExp.prototype.exec()
verwenden. - Falls Sie erfassende Gruppen erhalten möchten und das globale Flag gesetzt ist, müssen Sie
RegExp.prototype.exec()
oderString.prototype.matchAll()
verwenden.
Weitere Informationen zu den Semantiken von match()
bei Übergabe eines regulären Ausdrucks finden Sie unter RegExp.prototype[Symbol.match]()
.
Beispiele
Verwendung von match()
Im folgenden Beispiel wird match()
verwendet, um "Chapter"
, gefolgt von einer oder mehreren Ziffern, gefolgt von einem Dezimalpunkt und null oder mehr Ziffern zu finden.
Der reguläre Ausdruck enthält das i
-Flag, sodass Groß- und Kleinschreibung ignoriert wird.
const str = "For more information, see Chapter 3.4.5.1";
const re = /see (chapter \d+(\.\d)*)/i;
const found = str.match(re);
console.log(found);
// [
// 'see Chapter 3.4.5.1',
// 'Chapter 3.4.5.1',
// '.1',
// index: 22,
// input: 'For more information, see Chapter 3.4.5.1',
// groups: undefined
// ]
Im obigen Übereinstimmungsergebnis ist 'see Chapter 3.4.5.1'
die gesamte Übereinstimmung. 'Chapter 3.4.5.1'
wurde durch (chapter \d+(\.\d)*)
erfasst. '.1'
war der zuletzt von (\.\d)
erfasste Wert. Die index
-Eigenschaft (22
) ist der nullbasierte Index der gesamten Übereinstimmung. Die input
-Eigenschaft ist der ursprüngliche String, der analysiert wurde.
Verwendung des globalen und ignoreCase-Flags mit match()
Das folgende Beispiel zeigt die Verwendung des globalen Flags und des ignore-case-Flags mit match()
. Alle Buchstaben A
bis E
und a
bis e
werden zurückgegeben, wobei jeder Buchstabe ein eigenes Element im Array ist.
const str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
const regexp = /[A-E]/gi;
const matches = str.match(regexp);
console.log(matches);
// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
Hinweis:
Siehe auch String.prototype.matchAll()
und Erweitertes Suchen mit Flags.
Verwendung benannter erfassender Gruppen
In Browsern, die benannte erfassende Gruppen unterstützen, erfasst der folgende Code "fox"
oder "cat"
in einer Gruppe namens animal
:
const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";
const capturingRegex = /(?<animal>fox|cat) jumps over/;
const found = paragraph.match(capturingRegex);
console.log(found.groups); // {animal: "fox"}
Verwendung von match() ohne Parameter
const str = "Nothing will come of nothing.";
str.match(); // returns [""]
Verwendung von match() mit einem Nicht-RegExp, das [Symbol.match]()
implementiert
Falls ein Objekt eine Symbol.match
-Methode hat, kann es als benutzerdefinierter Matcher verwendet werden. Der Rückgabewert von Symbol.match
wird der Rückgabewert von match()
.
const str = "Hmm, this is interesting.";
str.match({
[Symbol.match](str) {
return ["Yes, it's interesting."];
},
}); // returns ["Yes, it's interesting."]
Ein Nicht-RegExp als Parameter
Wenn der regexp
-Parameter eine Zeichenfolge oder eine Zahl ist, wird er implizit durch new RegExp(regexp)
in eine RegExp
umgewandelt.
const str1 =
"NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.";
const str2 =
"My grandfather is 65 years old and My grandmother is 63 years old.";
const str3 = "The contract was declared null and void.";
str1.match("number"); // "number" is a string. returns ["number"]
str1.match(NaN); // the type of NaN is the number. returns ["NaN"]
str1.match(Infinity); // the type of Infinity is the number. returns ["Infinity"]
str1.match(+Infinity); // returns ["Infinity"]
str1.match(-Infinity); // returns ["-Infinity"]
str2.match(65); // returns ["65"]
str2.match(+65); // A number with a positive sign. returns ["65"]
str3.match(null); // returns ["null"]
Dies kann unerwartete Ergebnisse haben, falls Sonderzeichen nicht korrekt maskiert sind.
console.log("123".match("1.3")); // [ "123" ]
Dies ist eine Übereinstimmung, weil .
in einem regulären Ausdruck jedes Zeichen matcht. Um es nur mit einem Punkt-Zeichen übereinstimmen zu lassen, müssen Sie die Eingabe maskieren.
console.log("123".match("1\\.3")); // null
Spezifikationen
Specification |
---|
ECMAScript® 2025 Language Specification # sec-string.prototype.match |
Browser-Kompatibilität
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
match |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support