JavaScript/Objekte/String/match

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Methode String.match() durchsucht eine Zeichenkette mit Hilfe eines regulären Ausdrucks und liefert ein Array mit Zeichenfolgen zurück, auf die der reguläre Ausdruck passt. Falls es keine passende Zeichenfolge gibt, ist das Ergebnis null.

Syntax

str.match(regexp)


Erwartet als Parameter den regulären Ausdruck.


function init() {
  var elem = document.getElementById('button');
  elem.addEventListener('click', pruefen);	
}
 
function pruefen() {
    var aussage = "Der Mensch ist des Menschen sein Feind.";
    var ergebnis = aussage.match(/Mensch\S{2}/);
    ausgabe("Test 1: " + ergebnis);
}

function ausgabe(text){
  var ausgabe = document.getElementById('ausgabe');
  ausgabe.innerHTML = text;
}

Das erste Script im Beispiel belegt eine Variable aussage mit einem Wert. Auf den gespeicherten Wert dieser Variablen wird mit String.match() ein regulärer Ausdruck angewendet. Dieser findet die Zeichenfolge "Mensch", wenn noch zwei weitere Zeichen folgen, aber nicht, wenn ein Leerzeichen dabei ist. Auf diese Weise wird nur das hintere Wort "Menschen" gefunden. Das Ergebnis wird ausgegeben.


function pruefen() {
  var aussage = "Der Mensch ist des Menschen sein Feind.";
  var ergebnis = aussage.match(/\bMensch\b|\bMenschen\b/g);
  if (ergebnis) {
	var fundstellen = 'Test 2:<br>';
    for (var index = 0; index < ergebnis.length; ++index) {
	  var fundstellen = fundstellen  + 'Fund ' + index + ' - ' + ergebnis[index] +'<br>';
	}
	ausgabe(fundstellen);
  } 
  else {
    ausgabe('Kein Vorkommen gefunden!');
  }
}

Das Beispiel wendet auf den gespeicherten Wert der Variablen aussage mit String.match() einen anderen regulären Ausdruck an. Dieser findet die Zeichenfolge "Mensch" oder die Zeichenfolge "Menschen". Hinter dem Ausdruck ist außerdem mit g markiert, dass global gesucht werden soll. Alle Fundstellen werden als Array mit einem oder mehr Einträgen zurückgegeben. Die Variable ergebnis, in der der Rückgabewert im Beispiel gespeichert wird, muss deshalb anschließend als Array behandelt werden. Das Array-Objekt wird jedoch nur erzeugt, wenn es Suchtreffer gibt. Deshalb ist es sicherer, folgende Anweisungen von der Abfrage abhängig zu machen, ob das Objekt existiert. Mit if (ergebnis) ist eine solche Abfrage möglich. Im Beispiel werden dann in einer for-Schleife alle Suchtreffer ausgegeben.


function pruefen() {
  var aussage = 'Wir wollen weisse Wäsche waschen';
  var ergebnis = aussage.match(/w/gi);
  if (ergebnis) {
    ausgabe('Test 3: ' + ergebnis.length + 'x gefunden');
  }
}

Das dritte Beispiel belegt die Variable aussage mit einem neuen Wert, in dem der Buchstabe w oft vorkommt, mal klein- und mal großgeschrieben. Auf den gespeicherten Wert dieser Variablen wird mit String.match() ein regulärer Ausdruck angewendet. Dieser sucht nach dem Vorkommen von w und zwar wieder, wie im zweiten Script, global. Es werden also alle Fundstellen als Array zurückgegeben. Im Beispiel sollen jedoch sowohl klein- als auch großgeschriebene w gefunden werden. Deshalb wird hinter dem regulären Ausdruck noch zusätzlich ein kleines i notiert. Dies bewirkt, dass Groß-/Kleinschreibung nicht beachtet wird. Zur Kontrolle wird im Beispiel die Anzahl der Fundstellen ausgegeben.

Siehe auch

Näheres über reguläre Ausdrücke finden Sie beim RegExp-Objekt.

Näheres über Arrays wird beim Array-Objekt beschrieben.

Um nicht gefundene Zeichenfolgen, sondern nur Positionen gefundener Ausdrücke zu ermitteln, können Sie die Methode String.search() verwenden.

Weblinks