Baseline Widely available
Die match()
Methode von String
Werten ruft das Ergebnis des Abgleichs dieses Strings mit einem regulären Ausdruck ab.
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 Parameter
regexp
Ein reguläres Ausdrucksobjekt oder ein beliebiges Objekt, das eine Symbol.match
Methode hat.
Wenn regexp
kein RegExp
Objekt ist und keine Symbol.match
Methode hat, wird es implizit zu einem RegExp
konvertiert, indem new RegExp(regexp)
verwendet wird.
Wenn Sie keinen Parameter angeben und die match()
Methode direkt verwenden, erhalten Sie ein Array
mit einem leeren String: [""]
, da dies gleichbedeutend ist mit match(/(?:)/)
.
Ein Array
, dessen Inhalt von der Anwesenheit oder Abwesenheit des globalen (g
) Flags abhängt, oder null
, wenn keine Ãbereinstimmungen gefunden werden.
g
Flag verwendet wird, werden alle Ergebnisse zurückgegeben, die mit dem vollständigen regulären Ausdruck übereinstimmen, aber Erfassungsgruppen werden nicht eingeschlossen.g
Flag nicht verwendet wird, wird nur die erste vollständige Ãbereinstimmung und ihre zugehörigen Erfassungsgruppen zurückgegeben. In diesem Fall gibt match()
dasselbe Ergebnis zurück wie RegExp.prototype.exec()
(ein Array mit einigen zusätzlichen Eigenschaften).Die Implementierung von String.prototype.match
tut nicht viel anderes, als die Symbol.match
Methode des Arguments mit dem String als erstem Parameter aufzurufen. Die tatsächliche Implementierung stammt von RegExp.prototype[Symbol.match]()
.
RegExp
übereinstimmt, verwenden Sie RegExp.prototype.test()
.RegExp.prototype.exec()
verwenden.RegExp.prototype.exec()
oder String.prototype.matchAll()
verwenden.Für weitere Informationen über die Semantik von match()
, wenn ein Regex übergeben wird, siehe RegExp.prototype[Symbol.match]()
.
Im folgenden Beispiel wird match()
verwendet, um "Chapter"
zu finden, gefolgt von einem oder mehreren numerischen Zeichen, gefolgt von einem Dezimalpunkt und numerischen Zeichen null oder mehrmals.
Der reguläre Ausdruck enthält das i
Flag, sodass Unterschiede zwischen GroÃ- und Kleinschreibung ignoriert werden.
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 Match-Ergebnis ist 'see Chapter 3.4.5.1'
das gesamte Match. 'Chapter 3.4.5.1'
wurde von (chapter \d+(\.\d)*)
erfasst. '.1'
war der letzte Wert, der von (\.\d)
erfasst wurde. Die index
Eigenschaft (22
) ist der nullbasierte Index des gesamten Matchs. Die input
Eigenschaft ist der ursprüngliche String, der analysiert wurde.
Das folgende Beispiel demonstriert die Verwendung des globalen Flags und des ignore-case Flags mit match()
. Alle Buchstaben A
bis E
und a
bis e
werden zurückgegeben, jeder ein eigenes Element im Array.
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.
In Browsern, die benannte Erfassungsgruppen unterstützen, erfasst der folgende Code "fox"
oder "cat"
in eine 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
Wenn ein Objekt eine Symbol.match
Methode hat, kann es als benutzerdefinierter Matcher verwendet werden. Der Rückgabewert von Symbol.match
wird dann zum 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 ein String oder eine Zahl ist, wird es implizit zu einem RegExp
konvertiert, indem new RegExp(regexp)
verwendet wird.
const str1 =
"All numbers except NaN satisfy <= 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"]
str2.match(65); // returns ["65"]
str3.match(null); // returns ["null"]
Dies kann unerwartete Ergebnisse haben, wenn Sonderzeichen nicht ordnungsgemäà maskiert sind.
console.log("123".match("1.3")); // [ "123" ]
Dies ist eine Ãbereinstimmung, weil .
in einem Regex jedes Zeichen erfasst. Um nur einen Punkt zu erfassen, müssen Sie die Eingabe escapen.
console.log("123".match("1\\.3")); // null
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