Gleichen Sie mehrere Vorkommen mit Regex in JavaScript ab

Tahseen Tauseef 12 Oktober 2023
  1. Reguläre Ausdrücke in JavaScript
  2. Verwenden Sie RegExp.prototype.exec(), um mehrere Vorkommen mit Regex in JavaScript abzugleichen
  3. Verwenden Sie String.prototype.search(), um mehrere Vorkommen mit Regex in JavaScript abzugleichen
  4. Verwenden Sie String.prototype.matchAll(), um mehrere Vorkommen mit Regex in JavaScript abzugleichen
Gleichen Sie mehrere Vorkommen mit Regex in JavaScript ab

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 Eigenschaft lastIndex 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 ändert lastIndex auf 0.

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 object regexp is executed, it is implicitly converted to a RegExp with new 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 mit new RegExp(obj). implizit in ein RegExp umgewandelt. Ein TypeError wird ausgegeben, wenn das RegExp-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 und input). 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.

Verwandter Artikel - JavaScript Regex