tomas müller: javascript suche

HALOO ZUSAMMEN

wie kann ich mit javascript nicht mit einem string sondern einer variable suchen???

beispiel:

var suche_nach;
var text;
var ergebnis;

suche_nach = "hallo";
text = "hallo welt";

// nicht so
ergebnis = text.search(/hallo+/i);

// sondern so irgend was
ergebnis = text.search(/suche_nach+/i);

danke im voraus

gruss tom

  1. Moin,

    wie kann ich mit javascript nicht mit einem string sondern einer variable suchen???

    Ich bemühe hir immer das ungeliebte Kind "eval()":

    ergebnis = text.search(/suche_nach+/i);

    ergebnis.text.search(eval("/"+suche_nach+"/i"));

    Gruesse,
    Joerg

    1. Tag,

      Moin,

      wie kann ich mit javascript nicht mit einem string sondern einer variable suchen???
      Ich bemühe hir immer das ungeliebte Kind "eval()":

      ergebnis = text.search(/suche_nach+/i);

      ergebnis.text.search(eval("/"+suche_nach+"/i"));

      *grauslig*

      ergebnis.text.search(new RegExp(suche_nach, "i"));

      Und wofür soll bitte das "+" bei "hallo+" gut sein?
      "+" heißt in diesem Fall mind. ein "o".

      Grüße,
      Steffen.

    2. gruss Jörg, hallo tomas,

      Ich bemühe hir immer das ungeliebte Kind "eval()":

      ...

      ergebnis.text.search(eval("/"+suche_nach+"/i"));

      @Jörg: schande ueber Dich ;-)

      aufklaerung:

      die String-methode "search" akzeptiert fuer das erste
         argument sowohl parameter vom typ "string" als auch
         "RegExp"-objekte (regulaere ausdruecke).
         letztgenannte koennen nicht nur, wie im jetzigen thread
         immer wieder (re)zitiert, ueber objektliterale erzeugt,
         sondern auch ueber ihre konstruktor-funktion initialisiert
         werden - bsp.:

      ~~~javascript var regX01 = /^\s+/g; // literal;
         var regX02 = new RegExp("^\s+","g"); // konstruktor;

      alert("regX01 = " + regX01 +
         ";\nregX02 = " + regX02 +
         ";\n\n(regX01.toString() == regX02.toString()) ? " +
         (regX01.toString() == regX02.toString()));

        
         wie man sieht, wird fuer "regX02" das steuerzeichen "\"  
         maskiert.  
         erzeugt man zur laufzeit ein suchmuster aus einer oder  
         mehreren variablen, muss man dieser pflicht zur maskie-  
         rung aller in regulaeren ausdruecken moeglicherweise  
         vorkommenden steuerzeichen nachkommen.  
        
         bsp. zur veranschaulichung des problems:  
        
         ~~~javascript
      var str="gespendet wurden 2000 US$.";  
         alert(str.replace("2000 US$.","1700 Euro.")); // string-argument;  
         alert(str.replace(/2000 us$./gi,"1700 Euro.")); // unmaskiertes RegExp-objekt;  
         alert(str.replace(/2000 us\$\./gi,"1700 Euro.")); // maskiertes RegExp-objekt;
      

      bsp. fuer eine moegliche automatisierte loesung:

      ~~~javascript String.prototype.toRegExpString = function () { // does not work in netscape 4;
           return this.replace(/([^$.*+?=!:|\/()[]{}])/g,"\$1");
         };
         var str="gespendet wurden 2000 US$.";
         var searchStr = "2000 us$.";
         var regX = new RegExp(searchStr.toRegExpString(),"gi"); // maskierung;
         alert(searchStr.toRegExpString() + "\n\n" + str.replace(regX,"1700 Euro."));

        
        
         hilfreich ist vielleicht auch noch folgender  
         archivlink zum thema ["Regex in Javascript"](http://forum.de.selfhtml.org/archiv/2004/11/t95377/#m578563).  
        
        
        
         by(t)e by(t)e - peterS. - pseliger@gmx.net  
        
        
      
      -- 
      "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.  
      Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford  
        
      ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]
      
  2. Hallo,

    wie kann ich mit javascript nicht mit einem string sondern einer variable suchen???

    beispiel:

    var suche_nach;
    var text;
    var ergebnis;

    suche_nach = /hallo+/i; //siehe

    text = "hallo welt";

    // sondern so irgend was

    ergebnis = text.search(suche_nach);

    viele Grüße

    Axel

  3. Hallo,

    ergebnis = text.search(/suche_nach+/i);

    ergebnis = text.search(suche_nach);

    scheint bereits "0" auszugeben.

    Grüsse

    Cyx23