thể trùng lặp:
Interesting test of Javascript RegExp
Regular expression test can't decide between true and false (JavaScript)Tại sao cùng một RegExp hoạt động khác nhau?
Example of issue. Khi chạy nội tuyến các kết quả như tôi mong đợi. Nhưng khi được lưu trữ như một biến nó bỏ qua phần tử span giữa.
// Inline RegExp
function getToggleClasses() {
var toggler = [],
elements = document.getElementsByTagName("*"),
i=0,
len = elements.length;
for (i; i < len; i++) {
if (/toggler/g.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Inline: " + toggler.length;
}
// Variable
function getToggleClasses2() {
var toggler = [],
elements = document.getElementsByTagName("*"),
tester = /toggler/g,
i=0,
len = elements.length;
for (i; i < len; i++) {
if (tester.test(elements[i].className)) {
toggler.push(elements[i]);
}
}
document.getElementById('results').innerHTML += "<br />Variable: " + toggler.length;
}
Đánh dấu lên:
<span class="toggler">A</span>
<span class="toggler">B</span>
<span class="toggler">C</span>
Với: tôi hiểu không có lý do để sử dụng một RegExp để làm so sánh này và tôi cũng hiểu làm thế nào các thư viện lớn như jQuery là. Tôi cũng biết rằng không cần phải có g
trong trường hợp này.
Tôi không thể hiểu tại sao hai phương pháp này nên trả về các kết quả khác nhau.
Đây chỉ là sở thích cá nhân, nhưng tôi nghĩ rằng nó sẽ cải thiện rõ ràng một chút để đặt dấu ngoặc đơn xung quanh một chữ regex có cờ khi gọi một hàm trên chữ. – JAB
@apsillers, bạn là chính xác. Bạn đã tìm kiếm những gì? Tôi không thể tìm ra những gì để tìm kiếm để có được kết quả sau đó. – Joe
Tôi lừa một chút và tìm kiếm '[javascript] kiểm tra regex lastindex' - tôi khá chắc chắn rằng một câu hỏi như thế này đã được hỏi trước đây, và tôi biết câu trả lời sẽ bao gồm văn bản' lastIndex'. Đây là một trường hợp tốt cho thấy rằng sự tồn tại của một câu hỏi trùng lặp không nhất thiết là một dấu hiệu cho thấy người hỏi đã cẩu thả; bạn đã hỏi một câu hỏi thích hợp cho một vấn đề khó tìm kiếm. – apsillers