Regulären Ausdruck suchen
Torsten
- javascript
0 Joachim
Hallo,
ich tue mich etwas schwer mit RegEx.
Ich möchte gerne einen String nach einem Teilstring durchsuchen. Allerdings dürfen VOR und NACH dem Ausdruck den ich suche NUR Leerzeichen stehen.
Also wäre bei "hallo" der String "Juhu... hallo .. toll" falsch und " hallo " eben richtig.
Weiß jemand wie ich das am besten realisiere?
Tia,
:-) Torsten
Hi,
sowas? /\s+hallo\s+/
Gruesse Joachim
Hallo Joachim,
sowas? /\s+hallo\s+/
Quantifier sind hier gar nicht notwendig,
/\shallo\s/ reicht voellig aus. Die Quantifier
machen den RegEx nur unnoetig langsam.
Gruesse,
CK
sowas? /\s+hallo\s+/
Spitze, klappt!
Allerdings möchte ich den Ausdruck gerne aus einem Array holen. Wenn ich die mit
myRegEx = eval('/\s+' + commands[i] + '\s+/');
zusammenbaue, schmeisst er die Backslashs raus. Wie kann ich das denn umgehen? (Hängt nicht von einfachen oder doppelten Anführunsgstrichen ab!)
Tia,
:-) Torsten
Hi,
myRegEx = eval('/\s+' + commands[i] + '\s+/');
var reg = eval("/\s" + commands[i] + "\s/");
Gruesse Joachim
gruss Joachim, hi Torsten,
myRegEx = eval('/\s+' + commands[i] + '\s+/');
var reg = eval("/\s" + commands[i] + "\s/");
knapp daneben: "eval is evil" (TM) by Cheatah
warum - z.b. hier: http://forum.de.selfhtml.org/archiv/2002/8/20519/#m115050 ff.
noch mehr davon: http://selfsuche.teamone.de/cgi-bin/such.pl?suchausdruck=%2Beval+%2Bevil+%2Bcheatah&lang=on&feld=alle&index_5=on&index_6=on&index_7=on&hits=100#Forums-Archiv 2003
ausserdem ist die methode "eval" in den meisten missbrauchs-
faellen um ein vielfaches langsamer als die sauber programmierte
alternative;
regulaere ausdruecke sind JavaScript-objekte;
die meissten js-objekte lassen sich sowohl
ueber ihre literalschreibweise als auch ueber
ihre konstruktorfunktion definieren;
@Torsten - in Deinem beispiel ist es Dir nicht
moeglich, das objektliteral /\s+phrase\s+/ fuer
ein bestimmtes RegExp-objekt zu verwenden, die
"eval"-methode scheidet aus guten gruenden aus -
der konstruktor "RegExp" loest das dilemma:
var regX = new RegExp("\s+" + phrase + "\s+");
dies bietet ausserdem den vorteil, die "compile"-
methode des RegExp-objektes anwenden zu koennen,
falls weitere suchausdruecke ueber dasselbe RegExp-
objekt realisiert werden sollen - bsp.:
var searchFor = ["hallo","hi"];
var regX = new RegExp("\s+" + searchFor[0] + "\s+","i");
alert(regX); // [/\s+hallo\s+/i];
regX.compile("\s+" + searchFor[1] + "\s+","i");
alert(regX); // [/\s+hi\s+/i];
by(t)e by(t)e - peterS. - pseliger@gmx.net
--
sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)