Axel Richter: regexp

Beitrag lesen

Hallo,

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/," = ");

^ein Zeichen, welches kein Leerzeichen oder White-Space-Steuerzeichen ist (\S), gefolgt von einem beliebigen Zeichen (.), gefolgt von der Zeichenfolge '"="', gefolgt von einem beliebigen Zeichen (.), gefolgt von \S (siehe vorn) soll ersetzt werden durch die Zeichenfolge ' = '.

  
alert('Der Test"="zum Ersetzen'.replace(/\S."=".\S/," = "));  

ergibt 'Der Te = m Ersetzen'

Das funktioniert aber nicht. Ich habe es mit SELFHTML schon probiert, bin aber nicht zurecht gekommen, könnt ihr mir helfen?

Das entsprechende Kapitel in SelfHTML http://de.selfhtml.org/javascript/objekte/string.htm#replace und auch die Kapitel http://de.selfhtml.org/javascript/objekte/regexp.htm und http://de.selfhtml.org/perl/sprache/regexpr.htm kennst Du also.

Das Problem ist, dass auf \S alles passt, was kein White-Space ist und dass diese Zeichen dann mit ersetzt werden. Ich würde zwei Durchläufe machen. Zuerst alle möglichen Leerzeichen \s um Gleichheitszeichen entfernen, und dann alle Gleichheitszeichen durch " = " ersetzen.

  
var TestString = "a=1; b= 2; c =3; d = 4; e  =  5; ab=1.1; bc= 2.2; cd =3.3; de = 4.4; ef  =  5.5; \"test 1\"=1; \"test 2\"= 2; \"test 3\" =3; \"test 4\" = 4; \"test 5\"  =  5;";  
var Ergebnis = TestString.replace(/\s*=\s*|\s*=|=\s*/g, "=");  
alert(Ergebnis);  
Ergebnis = Ergebnis.replace(/=/g, " = ");  
alert(Ergebnis);  

viele Grüße

Axel