Sascha: [RegExp] Alle Positionen ermitteln (string.search)

Hi,

ich bin noch etwas angeschlagen von gestern, deshalb hoffe ich, dass ich keinen themenrelevanten Thread übersehen habe...

Ich möchte gerne eine CSS Datei per XMLHttpRequest einlesen und den .responseText mit RegExp weitervarbeiten.

Ich möchte dabei alle Positionen eins Suchmusters herausfiltern. Leider liefert mir .search nur die erste Position des Suchmusters. /g brachte leider auch nicht das gewünschte Ergebnis :(

  
css.onreadystatechange = function ()  
  
{  
 if(css.readyState == 4)  
 {  
    var response = css.responseText;  
    var cssAttribute = /min-height/g;  
    alert(response);  
    test = new Array()  
    test = response.search(cssAttribute)  
    alert(test);  
 }  
}  
  
css.send(null);

PS: test.length gibt nur ein undefined aus.

Wo liegt mein (gedanklicher) Fehler?

  1. Hallo Sascha,

    Wo liegt mein (gedanklicher) Fehler?

    Das die Funktion http://de.selfhtml.org/javascript/objekte/string.htm#search@title=search eben nur "die Position des ersten Treffers zurück (ge)liefert". Eine Lösung ist bspw. http://de.selfhtml.org/javascript/objekte/string.htm#index_of@title=indexOf; mit dem 2. Parameter könntest Du Dein Ziel erreichen.

    Mit freundlichem Gruß
    Micha

    --
    simple JavaScript Spiele: Snake, MineSweeper, Sudoku oder Tetris
  2. Hi,

    Ich möchte gerne eine CSS Datei per XMLHttpRequest einlesen und den .responseText mit RegExp weitervarbeiten.
    Ich möchte dabei alle Positionen eins Suchmusters herausfiltern. Leider liefert mir .search nur die erste Position des Suchmusters. /g brachte leider auch nicht das gewünschte Ergebnis :(

    search liefert immer nur den ersten Treffer.

      
    var x = "blabluble";  
    var re = /bl./g;  
    var ergebnis= re.exec(x);  
    while (ergebnis !== null)  
    {  
        alert(ergebnis.index + ":" +  ergebnis[0]);  
        ergebnis = re.exec(x);  
    }  
    
    

    Statt des alerts kannst Du die Positionen natürlich auch in einem Array aufsammeln.

    Wenn Du bereit bist, den Browser per Taskmanager zu schließen, kannst Du bei obigem Code mal das g nach dem / weglassen ...

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.