wahsaga: regexp

Beitrag lesen

hi,

Ich möchte in einem String sicherstellen, dass um ein Gleicheitszeichen immer ein Leerzeichen ist. Also wäre falsch "eins=zwei", richtig müsste es lauten "eins = zwei".

Ich dachte ich könnte es so lösen:
sStatement = sStatement.replace(/\S."=".\S/," = ");

Was sollen denn da die Anführungszeichen um das Gleichheitszeichen? Damit suchst du nach {nicht white space}"="{nicht white space} - aber das willst du doch gar nicht?

"eins=zwei".replace(/\S=\S/," = ")
wäre schon eher das, was du "suchst".
Aber dabei werden jetzt die beiden Zeichen links und rechts vom Gleichheitszeichen als Bestandteil des Suchtreffers angesehen, also wird s=z komplett durch " = " ersetzt, heraus kommt ein = wei - auch noch nicht das, was du willst.

Die Möglichkeit, Teile des Suchmusters nicht zum Suchtreffer hinzuzuählen, bieten RegEx in Javascript m.W. nicht - also musst du dafür sorgen, dass sie auch im Ersatz-String wieder mit aufgenommen werden:

"eins=zwei".replace(/(\S)=(\S)/,"$1 = $2")

Du siehst, ich habe erst mal \S eingeklammert, um damit sog. back references zu erzeugen - zwei "Variablen", in denen jetzt die mit \S gefundenen Zeichen abgelegt worden sind.
Und als zweites setze ich diese dann im Ersatzausdruck wieder ein, als $1 und $2.

Heraus kommt also bei obigem Ausdruck eins = zwei.

Näheres dazu erfährst du bei http://de.selfhtml.org/javascript/objekte/regexp.htm#dollar_1_9

gruß,
wahsaga

--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }