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:]