2009-12-18 19 views
6

Trong IE, "x".split(/(x)/).length trả về 0Bất kỳ ai cũng biết tại sao "x" .split (/ (x) /) chiều dài trả về 0 trong IE?

Trong Firefox, Chrome, Safari và Opera, nó trả về 3.

Có ai biết lý do tại sao không? Nếu có thể, một liên kết tham chiếu sẽ được đánh giá cao.

Tôi tin rằng đó là vấn đề triển khai thực hiện regex của IE, nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về điều đó.

+0

Phiên bản IE nào? –

+0

IE6,7,8 theo như tôi biết – YOU

Trả lời

6

Bạn đúng là có vấn đề triển khai. IE đều bỏ qua các giá trị rỗng và các khối chụp trong các biểu thức chính quy.

Vì vậy, đối

"foo".split(/o/) 

IE cho

[f] 

nơi các trình duyệt khác cho

["f","",""] 

và khi bạn thêm chụp:

"foo".split(/(o)/) 

IE thực hiện như nhau, nhưng những người khác thêm delimiter bắt đến các mảng kết quả để cung cấp cho

["f","o","","o",""] 

Vì vậy, không may bạn có thể hoặc là cần phải tránh sử dụng phân chia, hoặc mã xung quanh những vấn đề này.

+0

+1, nhờ có thêm chi tiết, phân tích. – YOU

1

Tôi đã gặp sự cố tương tự với việc triển khai chia tách IE bị hỏng.

Đây là một tệp nhỏ library đã khắc phục sự cố một cách hoàn hảo.

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