5

Tôi muốn thay thế khoảng trắng trong bất kỳ trình duyệt tương đối hiện đại nào (vì vậy đối với IE, phiên bản> = 7).Khớp không gian màu trắng không thể tách rời trong IE7 và IE8 trong Javascript

Như vậy cho chuỗi "Hello world!" chúng tôi sẽ làm gì:

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

Mà chúng ta mong chờ đến đầu ra: Result: 'Helloworld!'

Nhưng trong IE7 và IE8 mặc dù nó không sử dụng một không gian không vỡ như một trong những : &#160; == &nbsp; == \u00A0

Ví dụ:

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

Sẽ xuất Result: 'Helloworld!' trong FF và IE> = 9 và Result : ' ' trong IE7 và IE8. Cái quái gì thế?

Điều này khiến tôi tự hỏi liệu đây có phải là ngoại lệ duy nhất không? Tôi không thể tìm thấy nhiều thông tin về điều này chút nào. Có thể Biểu thức chính quy loại bỏ tất cả các khoảng trắng bao gồm không thể phá vỡ không?

Trả lời

2

Sử dụng này một:

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

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

câu trả lời ban đầu của bạn không hoạt động. ' ' là vô ích khi các ký tự được mã hóa, đó là toàn bộ vấn đề. –

+0

@Asad - Trong câu trả lời ban đầu của tôi, tôi đã bao gồm ' ' và ' ' vào mẫu để đảm bảo giải pháp hoạt động với bất kỳ trình duyệt nào, thậm chí một số giải mã không mã hóa các ký tự đặc biệt. –

+0

Không, bạn chỉ bao gồm '\ s' và chuỗi ký tự'   'trong câu trả lời ban đầu. Đó là trong các chỉnh sửa của bạn mà bạn đã bao gồm mã hex, cũng như không có gì vô dụng ' '. –

Các vấn đề liên quan