Tôi đang sử dụng một phần mở rộng cho jQuery "contains", hiển thị dưới đây:Regular Expressions Javascript với jQuery Có Regex mở rộng
$.extend($.expr[':'],{
containsExact: function(a,i,m){
return $.trim(a.innerHTML.toLowerCase()) === m[3].toLowerCase();
},
containsExactCase: function(a,i,m){
return $.trim(a.innerHTML) === m[3];
},
containsRegex: function(a,i,m){
var regreg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/,
reg = regreg.exec(m[3]);
return RegExp(reg[1], reg[2]).test($.trim(a.innerHTML));
}
});
Tôi có một bảng với một số tế bào mà tôi đang cố gắng để định dạng có điều kiện, vì vậy Tôi đang sử dụng phần mở rộng trong bộ chọn td
, với chức năng containsRegex
. Vấn đề mà tôi đang gặp phải là nhiều biểu thức thông thường mà tôi đang cố gắng sử dụng (tôi đã thử nghiệm trên các trình kiểm tra regex javascript như this và chúng đã hoạt động) không hoạt động với chức năng này. Đây là các chuỗi khác nhau mà tôi muốn đối sánh:
Lưu ý rằng "x" có thể là rìu, t, f hoặc v và "X" có thể là X, T, F hoặc V. Cuối cùng là một "(mb)" có thể là bất kỳ hai chữ cái thường az trong ngoặc đơn.
-, (mb), x *, x * (mb), x, x (mb), X *, X * (mb), X
Và đây là mã với một số câu lệnh regex mà tôi đang sử dụng:
$("td:containsExact('-')").addClass("0 queue"); // -
$("td:containsRegex('/[^xtfv*]\([a-z]{2}\)/g')").addClass("1 active"); // (mb)
$("td:containsRegex('/\b[xtfv]\*(?!\()/g')").addClass("2 queue review"); // x*
$("td:containsRegex('/\b[xtfv]\*(?:\([a-z]{2}\))/g')").addClass("3 active review"); // x*(mb)
$("td:containsRegEx('/\b[xtfv](?![*\(])/g')").addClass("4 queue"); // x
$("td:containsRegEx('/\b[xtfv](?:\([a-z]{2}\))/g')").addClass("5 active"); // x(mb)
$("td:containsRegEx('/\b[XTFV]\*(?!\()/g')").addClass("6 queue review"); // X*
$("td:containsRegEx('/\b[XTFV]\*(?:\([a-z]{2}\))/g')").addClass("7 active review"); // X*(mb)
$("td:containsRegEx('/\b[XTFV](?![*\(])/g')").addClass("8 done"); // X
Hầu hết các lỗi này trong Chrome. Có ai có bất kỳ con trỏ? Tiện ích mở rộng có hạn chế không?
Cảm ơn trước sự giúp đỡ của bạn!
Để tham khảo: lỗi nó đi là "của router Lỗi cú pháp, biểu hiện không được công nhận:)/g ')" trên "x *" và "X *". Nó áp dụng một cách thích hợp lớp vào "(mb)" nhưng cũng áp dụng cùng các lớp đó cho "x * (mb)" ... Phần còn lại của các tìm kiếm không vượt qua lỗi, nhưng chúng cũng không tìm thấy các kết quả phù hợp. – mbeasley