5

Ich möchte Leerzeichen in jedem relativ modernen Browser ersetzen (also für IE, Version> = 7).Übereinstimmung eines nicht brechbaren Leerraumes in IE7 und IE8 in Javascript

So die Zeichenfolge "Hello world!" gegeben wir tun würden:

<script type="text/javascript"> 
document.write("Result: '" + "Hello world!".replace(/\s/g, '') + "'"); 
</script> 

die wir Ausgang erwarten: Result: 'Helloworld!'

Aber in IE7 und IE8 obwohl es einen unzerbrechlichen Raum wie eine von ihnen nicht mit : &#160; == == &nbsp;\u00A0

Zum Beispiel:

<script type="text/javascript"> 
document.write("Result: '" + String.fromCharCode(160).replace(/\s/g, '') + "'"); 
</script> 

Ausgabe von Result: 'Helloworld!' in FF und IE> = 9 und Result : ' ' in IE7 und IE8. Was zum Teufel?

Das lässt mich fragen, ob dies die einzige Ausnahme ist? Ich konnte nicht viel Information darüber finden. Gibt es vielleicht einen Regulären Ausdruck, der alle Leerstellen entfernt einschließlich die nicht brechbar?

Antwort

2

verwenden ein:

replace(/(?:\s|\xA0|&nbsp;|&#160;)+/g, '') 

replace(/[\s\xA0]+/g, '') 
+0

Ihre ursprüngliche Antwort nicht funktioniert. Die " " ist nutzlos, sobald die Zeichen codiert sind, was das ganze Problem ist. –

+0

@Asad - In meiner ursprünglichen Antwort habe ich ' ' und ' ' in Muster eingefügt, um sicherzustellen, dass die Lösung mit jedem Browser funktioniert, sogar mit einigen, die keine Sonderzeichen codieren. –

+0

Nein, Sie haben '\ s' und die Zeichenfolge'   'in Ihre ursprüngliche Antwort eingefügt. Es ist in Ihren Edits, dass Sie den Hex-Code, sowie die ebenso nutzlose ' ' enthalten. –