javascript suche
tomas müller
- javascript
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
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
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.
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:]
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
Hallo,
ergebnis = text.search(/suche_nach+/i);
ergebnis = text.search(suche_nach);
scheint bereits "0" auszugeben.
Grüsse
Cyx23