5

में आई 7 और आईई 8 में एक गैर-ब्रेक करने योग्य सफेद स्थान मिलान करना मैं किसी भी अपेक्षाकृत आधुनिक ब्राउज़र (इस प्रकार आईई, संस्करण> = 7 के लिए) में सफेद रिक्त स्थान को प्रतिस्थापित करना चाहता हूं।जावास्क्रिप्ट

इस प्रकार स्ट्रिंग "Hello world!" हम क्या करेंगे दिया:

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

कौन सा हम उत्पादन की उम्मीद करेंगे: Result: 'Helloworld!'

लेकिन IE7 और IE8 में हालांकि यह एक गैर-भंगुर स्थान का उपयोग कर में विफल रहता है इनमें से किसी एक की तरह : &#160; == &nbsp; == \u00A0

उदाहरण के लिए:

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

आईएफ 7 और आईई 8 में एफएफ और आईई> = 9 और Result : ' ' में आउटपुट Result: 'Helloworld!' आउटपुट होगा। क्या बकवास है?

इससे मुझे आश्चर्य होता है कि यह एकमात्र अपवाद है? मुझे इसके बारे में ज्यादा जानकारी नहीं मिली। क्या शायद एक नियमित अभिव्यक्ति है जो सभी सफेद रिक्त स्थान को हटा देता है जिसमें गैर ब्रेकबल योग्य है?

उत्तर

2

उपयोग इस एक:

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

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

आपका मूल जवाब काम नहीं करता। अक्षरों को एन्कोड किए जाने के बाद '  'बेकार है, जो पूरी समस्या है। –

+0

@Asad - मेरे मूल उत्तर में मैंने किसी भी ब्राउज़र के साथ समाधान कार्यों को बीमा करने के लिए पैटर्न में ' ' और '  'शामिल किया है, यहां तक ​​कि कुछ जो विशेष वर्णों को एन्कोड नहीं करते हैं। –

+0

नहीं, आपने अपने मूल उत्तर में '\ s' और वर्ण अनुक्रम'   'शामिल किया है। यह आपके संपादनों में है कि आपने हेक्स कोड, साथ ही साथ समान रूप से बेकार ' ' शामिल किया है। –