zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden Problem mit regulärem Ausdruck "(/ {2,}/g,' ')"

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 17.12.2011, 11:38
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard Problem mit regulärem Ausdruck "(/ {2,}/g,' ')"

Mein Editor ermöglicht es, beim Speichern JS-Code automatisch auszuführen.

Ich verwende es für verschiedene "Bereinigungsarbeiten", die typischerweise anfallen, wenn fremder HTML-Code übernommen wird.

Beispiel:
Code:
tempDoc = tempDoc.replace(/€/g,'€');
tempDoc = tempDoc.replace(/ target="_blank"/g,'');
Dieser Code funktioniert problemlos.

Mein HTML-Code wird durch das automatische Einfügen von Tabulatoren formatiert.

Nun möchte ich mehrfache Leerzeichen (nicht mehrfache Tabulatoren) zu einem verschmelzen.

Dafür habe ich folgende Regel geschrieben:
Code:
tempDoc = tempDoc.replace(/ {2,}/g,' ');
Leider wirkt sie sich nicht auf mehrfache Leerzeichen aus.
Aber auch diese Regel wirkt sich nicht aus:
Code:
tempDoc = tempDoc.replace(/  /g,' ');
In einem Tool zum Testen für RegEx habe ich beide Ausdrücke getestet. Dort funktionieren sie genau wie erwartet.

Gibt es in JS irgendeine Besonderheit bezüglich Leerzeichen und regulären Ausdrücken?

Hat jemand eine Idee, was die Ursache sein könnte, warum die Ausdrücke sich nicht auswirken?

Danke.

Edit:
Ich hatte mich selber ausgetrickst.
Die JS-Code war nicht korrekt eingebunden.
Es wirkte immer noch alter, sehr ähnlicher JS-Code.
In diesem kam die "Verschelzungsregel" nicht vor.

Sorry.
__________________


Geändert von AndreasB (17.12.2011 um 13:49 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 17.12.2011, 14:53
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Der Ausdruck kann auch einfacher gemacht werden
HTML-Code:
tempDoc = tempDoc.replace(/ +/g,' ');
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 17.12.2011, 16:06
Benutzerbild von AndreasB
Erfahrener Benutzer
XHTMLforum-Kenner
Thread-Ersteller
 
Registriert seit: 29.11.2005
Beiträge: 1.391
AndreasB wird schon bald berühmt werden
Standard

Zitat:
Zitat von protonenbeschleuniger Beitrag anzeigen
Der Ausdruck kann auch einfacher gemacht werden
HTML-Code:
tempDoc = tempDoc.replace(/ +/g,' ');
Stimmt.
Danke für den Hinweis

Ich bossel gerade an sicheren Regeln zum Pretty-Print, also dem Entfernen von ausgewähltem Whitespace.
Sicher im Sinne von "braucht nicht manuell kontrolliert werden".

Aktuell verwende ich:
Code:
// Pretty-Print: SP-NBSP nach Inlinelevel-Starttag und vor  Inlinelevel-Endtag entfernen und davor bzw. dahinter wieder einfügen. So  eventuell entstehende doppelte SP-NBSP werden durch nachfolgende  Pretty-Print-Anweisungen wieder entfernt.
replace(/<(strong|em|span|code|kbd)>((&nbsp;)| )+/g,'$2<$1>');
replace(/((&nbsp;)| )+<\/(strong|em|span|code|kbd)>/g,'</$3>$2');

// Pretty-Print: TD oder TH, die allein SP-NBSP enthalten, normalisieren
replace(/<(td|th)>( |(&nbsp;))+<\/(td|th)>/g,'<$1></$4>');

// Pretty-Print: SP-NBSP nach Blocklevel-Starttags/vor Blocklevel-Endtags entfernen
// Starttags, die Attribute enthalten, lassen sich per RegEx in HTML nicht sicher erfassen. 
replace(/<(li|dt|dd|h1|h2|h3|h4|h5|h6|th|td|p|blockquote|address|div|tr|table|tbody|thead|tfoot|caption|title|ol|ul|dl)>( |(&nbsp;))+/g,'<$1>');
replace(/( |(&nbsp;))+<\/(li|dt|dd|h1|h2|h3|h4|h5|h6|th|td|p|blockquote|address|div|tr|table|tbody|thead|tfoot|caption|title|ol|ul|dl)>/g,'</$3>');

// Pretty-Print: SP-NBSP vor BR entfernen
replace(/( |(&nbsp;))+<br \/>/g,'<br />');

// Pretty-Print: BR, eventuell gefolgt von SP-NBSP, unmittelbar vor Blocklevel-Endtags entfernen
replace(/<br \/>( |(&nbsp;))*<\/(li|dt|dd|h1|h2|h3|h4|h5|h6|th|td|p|blockquote|address|div|tr|table|tbody|thead|tfoot|caption|title|ol|ul|dl)>/g,'</$3>');

// Pretty-Print: Mehrfache SP auf ein SP reduzieren
// Achtung! Diese Regel wirkt sich naturgemäß auch auf Inhalte von PRE aus
replace(/ +/g,' ');

// Pretty-Print: Eine beliebige Folge aus SP und NBSP zu einem einzigen NBSP normalisieren
replace(/(\ *(&nbsp;)+\ *)+/g,'&nbsp;');
Vielleicht interessiert sich jemand dafür? Vermutlich eher nicht

Das Setzen und Entfernen von Zeilenumbrüchen und Tabulatoren lasse ich von einer Funktion im Editor vornehmen.
Sie kann jedoch wenig und produziert etliche Bugs (die keinen Schaden anrichten).

Eine Option die Reformatierung auf Dateien einer ganzen Site anzuwenden gibt es nicht.
Siehe auch mein anderer Thread zu "Kodierung aller Dateien eines Ordners per GUI ändern zu UTF-8".
__________________


Geändert von AndreasB (18.12.2011 um 10:19 Uhr)
Mit Zitat antworten
Antwort


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Font der Überschrift ändern (Problem) artist CSS 2 07.12.2007 10:01
Design zu CSS/HTML verarbeiten - Problem häufen sich. Grafikamateur CSS 2 06.08.2007 09:57
Problem mit WordPress und dem Bilder Upload Maxefix Serveradministration und serverseitige Scripte 0 19.12.2006 14:58
Problem bei Div's - zwei mal das gleiche und doch nicht ... Niriel CSS 10 09.06.2005 17:39
Problem mit einem CSS Layout nARC CSS 20 21.05.2005 06:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:05 Uhr.