Tôi đã điều tra vấn đề này mà dường như càng tồi tệ thì càng đào sâu hơn.biểu thức chính quy trong phân tách chuỗi javascript, vấn đề tương thích với trình duyệt
tôi bắt đầu ngây thơ đủ cố gắng sử dụng biểu thức này để tách một chuỗi vào 'BR' HTML tags:
T = captions.innerHTML.split(/<br.*?>/g);
này hoạt động ở mọi trình duyệt (FF, Safari, Chrome), ngoại trừ IE7 và IE8 với ví dụ văn bản đầu vào như thế này:
is invariably subjective. <br />
The less frequently used warnings (Probably/Possibly) <br />
Xin lưu ý rằng văn bản mẫu có dấu cách trước '/' và đứng trước dòng mới.
Cả hai điều sau đây sẽ phù hợp với tất cả các thẻ HTML trong tất cả các trình duyệt:
T = captions.innerHTML.split(/<.*?>/g);
T = captions.innerHTML.split(/<.+?>/g);
Tuy nhiên, đáng ngạc nhiên (cho tôi ít nhất), này không làm việc trong FF và Chrome:
T = captions.innerHTML.split(/<br.+?>/g);
Edit:
này (đề nghị nhiều lần trong các câu trả lời dưới đây,) không hoạt động trên IE 7 hoặc 8:
012.T = captions.innerHTML.split(/<br[^>]*>/g);
(Nó đã làm việc trên Chrome và FF.)
Câu hỏi của tôi là: không ai biết một biểu thức mà làm việc trong tất cả các trình duyệt hiện nay để phù hợp với thẻ 'BR' ở trên (nhưng không phải thẻ HTML khác) . Và bất kỳ ai cũng có thể xác nhận rằng ví dụ cuối cùng ở trên phải là một kết hợp hợp lệ vì hai ký tự có mặt trong văn bản mẫu trước '>'.
PS - loại tài liệu của tôi là HTML chuyển tiếp.
Edit:
Tôi nghĩ rằng tôi có bằng chứng này là cụ thể cho String.split() hành vi trên IE, và không regex nói chung. Bạn phải sử dụng split() để xem vấn đề này. Tôi cũng đã tìm thấy một ma trận thử nghiệm cho thấy tỷ lệ thất bại khoảng 30% đối với các trường hợp thử nghiệm split() khi tôi chạy nó trên IE. Các cuộc thử nghiệm tương tự thông qua 100% trên Chrome FF và:
http://stevenlevithan.com/demo/split.cfm
Cho đến nay, tôi vẫn chưa tìm ra giải pháp cho IE, và thư viện được cung cấp bởi tác giả của rằng ma trận kiểm tra không khắc phục được trường hợp này.
PPS - Tôi hiện không thử nghiệm IE6 hoặc Opera, nhưng vui lòng thảo luận các vấn đề này nếu có liên quan. –