5

Desidero sostituire spazi bianchi in qualsiasi browser relativamente moderno (quindi per IE, versione> = 7).Corrispondenza di uno spazio bianco non interrompibile in IE7 e IE8 in Javascript

Così dando la stringa "Hello world!" faremmo:

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

che ci si aspetterebbe di uscita: Result: 'Helloworld!'

Ma in IE7 e IE8 anche se non riesce utilizzando uno spazio non divisibile come uno di loro : &#160; == == &nbsp;\u00A0

Ad esempio:

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

Produrrà Result: 'Helloworld!' in FF e IE> = 9 e Result : ' ' in IE7 e IE8. Che diavolo?

Questo mi chiede se questa sia l'unica eccezione? Non sono riuscito a trovare molte informazioni a riguardo. Esiste forse un'espressione regolare che rimuove tutti gli spazi bianchi compreso non irrinunciabile?

risposta

2

Utilizzare questo:

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

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

La tua risposta originale non funziona. Il ' ' è inutile una volta che i caratteri sono codificati, che è l'intero problema. –

+0

@Asad - Nella mia risposta originale ho incluso ' ' e ' ' in pattern per assicurare che la soluzione funzioni con qualsiasi browser, anche alcuni che non codificano caratteri speciali. –

+0

No, hai appena inserito '\ s' e la sequenza di caratteri'   'nella tua risposta originale. È nelle tue modifiche che hai inserito il codice esadecimale, così come l'altrettanto inutile " ". –

Problemi correlati