Gleichen Sie mehrere Vorkommen mit Regex in JavaScript ab
- Reguläre Ausdrücke in JavaScript
-
Verwenden Sie
RegExp.prototype.exec()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen -
Verwenden Sie
String.prototype.search()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen -
Verwenden Sie
String.prototype.matchAll()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen
In diesem Artikel erfahren Sie mehr über reguläre Ausdrücke in JavaScript und wie Sie mehrere Vorkommen in JavaScript abgleichen können.
Reguläre Ausdrücke in JavaScript
Reguläre Ausdrücke sind Zeichenfolgen, die ein Suchmuster erzeugen. Bei der Suche nach Daten in einem Text können Sie dieses Suchmuster verwenden, um mitzuteilen, wonach Sie suchen.
Ein regulärer Ausdruck kann so einfach wie ein einzelner Buchstabe oder so kompliziert wie ein ganzes Muster sein. Reguläre Ausdrücke können verwendet werden, um Textsuch- oder Textersetzungsoperationen durchzuführen.
Reguläre Ausdrücke haben das Potenzial, die Leistung Ihrer Suche erheblich zu verbessern.
Verwenden Sie RegExp.prototype.exec()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen
Die Funktion exec()
sucht nach einer Übereinstimmung in einem gegebenen String.
Syntax:
exec(str)
Parameter:
str
: Die Zeichenfolge, mit der Sie den regulären Ausdruck abgleichen müssen.
Rückgabewert:
- Wenn die Übereinstimmung erfolgreich ist, gibt die Funktion
exec()
ein Array zurück und modifiziert die EigenschaftlastIndex
des regulären Ausdrucksobjekts. Der übereinstimmende Text ist das erste Element im zurückgegebenen Array, gefolgt von einem Element für jede eingeklammerte Erfassungsgruppe des übereinstimmenden Textes. - Wenn die Übereinstimmung nicht erfolgreich ist, gibt die Funktion
exec()
null
zurück und ändertlastIndex
auf0
.
Wenn die global
- oder sticky
-Flags auf JavaScript-RegExp
-Objekten gesetzt sind, sind sie zustandsbehaftet. Sie speichern den lastIndex
des vorherigen Spiels.
Intern kann exec()
verwendet werden, um mehrere Übereinstimmungen in einer Textzeichenfolge (mit Erfassungsgruppen) zu durchlaufen.
Beispiel:
const regex1 = RegExp('hello*', 'g');
const str1 = 'table hello, hello world';
let array1;
while ((array1 = regex1.exec(str1)) !== null) {
console.log(`Found ${array1[0]}. Next starts at ${regex1.lastIndex}.`);
}
Ausgang:
"Found hello. Next starts at 11."
"Found hello. Next starts at 18."
Sie können auch über diesen Link auf das obige Codesegment zugreifen.
Geben Sie das Flag g
an, um aufeinanderfolgende Übereinstimmungen zu finden
Wenn Sie das Flag g
in Ihrem regulären Ausdruck angeben, können Sie häufig die Funktion exec()
verwenden, um nachfolgende Übereinstimmungen im genauen Text zu entdecken.
Die Suche beginnt bei der Teilzeichenfolge von str
, die von der Eigenschaft lastIndex
des regulären Ausdrucks bereitgestellt wird (test()
erweitert die Eigenschaft lastIndex
).
Bei der Suche nach einem anderen Text wird die Eigenschaft lastIndex
nicht zurückgesetzt; Stattdessen beginnt die Suche beim aktuellen lastIndex
.
Beispiel:
let myRe = /ab*/g;
let str = 'abbcdefabh';
let myArray;
while ((myArray = myRe.exec(str)) !== null) {
let msg = 'Found ' + myArray[0] + '. ';
msg += 'Next match starts at ' + myRe.lastIndex;
console.log(msg);
}
Ausgang:
"Found abb. Next match starts at 3"
"Found ab. Next match starts at 9"
Sie können über diesen Link auf die Demo des obigen Codesegments zugreifen.
Verwenden Sie exec()
mit RegEx-Literalen
Sie können exec()
auch verwenden, ohne explizit ein RegExp
-Objekt zu erstellen.
Beispiel:
let matches = /(hello \S+)/.exec('This is a hello world!');
console.log(matches[1]);
Ausgang:
"hello world!"
Sie können über diesen Link auf die Demo des obigen Codesegments zugreifen.
Verwenden Sie String.prototype.search()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen
Die Methode search()
beendet eine Suche nach einer Übereinstimmung zwischen einem regulären Ausdruck und diesem String
-Objekt.
Syntax:
search(regexp)
Parameter:
regexp
: It is a regular expression object. If a non-RegEx objectregexp
is executed, it is implicitly converted to aRegExp
withnew RegExp(regexp).
Rückgabewert:
- Wenn eine Übereinstimmung gefunden wird, wird der Index der ersten Übereinstimmung zwischen dem regulären Ausdruck und der angegebenen Zeichenfolge zurückgegeben, oder
-1
, wenn keine Übereinstimmung gefunden wird.
Beispiel:
const paragraph =
'The swift brown fox leaps over the sluggish dog. Was the dog truly sluggish if it barked??';
const regex = /[^\w\s]/g;
console.log(paragraph.search(regex));
console.log(paragraph[paragraph.search(regex)]);
Ausgang:
43
"."
Sie können über diesen Link auf die Demo des obigen Codesegments zugreifen.
Verwenden Sie String.prototype.matchAll()
, um mehrere Vorkommen mit Regex in JavaScript abzugleichen
Die Funktion matchAll()
liefert einen Iterator aller Ergebnisse, die einen String mit einem regulären Ausdruck abgleichen. Dies schließt einfangende Gruppen ein.
Syntax:
matchAll(regexp)
Parameter:
-
regexp
: Es ist ein Objekt mit regulären Ausdrücken.Wenn ein Nicht-RegEx-Objekt
obj
angegeben wird, wird es mitnew RegExp(obj).
implizit in einRegExp
umgewandelt. EinTypeError
wird ausgegeben, wenn dasRegExp
-Objekt nicht das/g
-Flag hat.
Rückgabewert:
- Es wird ein Iterator (der kein neustartbarer Iterable ist) von Übereinstimmungen zurückgegeben.
- Jede Übereinstimmung ist ein Array (mit zusätzlichen Eigenschaften
index
undinput
). Das Match-Array hat den übereinstimmenden Text als erstes Element und dann ein Ding für jede eingeklammerte Erfassungsgruppe des übereinstimmenden Textes.
Beispiel 1:
const regexp = /t(e)(st(\d?))/g;
const str = 'test1test2';
const array = [...str.matchAll(regexp)];
console.log(array[0]);
console.log(array[1]);
Ausgang:
["test1", "e", "st1", "1"]
["test2", "e", "st2", "2"]
Sie können über diesen Link auf die Demo des obigen Codesegments zugreifen.
Beispiel 2:
function checkMultipleOccurrences(sentence) {
var matchExpression = /(JavaScript?[^\s]+)|(typescript?[^\s]+)/g;
return sentence.match(matchExpression);
}
var sentence =
'This is my first JavaScript Program which is the subset of typescript';
console.log(sentence);
console.log(checkMultipleOccurrences(sentence));
Ausgang:
"This is my first JavaScript Program which is the subset of typescript"
["JavaScript", "typescript"]
Sie können über diesen Link auf die Demo des obigen Codesegments zugreifen.
Verwenden Sie den folgenden Befehl, um den oben genannten Code auszuführen:
node fileName.js.