Cách súc tích và hiệu quả nhất để dịch một chuỗi các chuỗi trong regex và sau đó sử dụng regex nhiều lần trên các chuỗi khác nhau để lấy kết quả phù hợp và sau đó lặp lại chúng? Bây giờ tôi đang sử dụng như sau:chuyển đổi mảng từ (chuỗi) thành regex và sử dụng nó để lấy các kết quả phù hợp trên chuỗi
var myArray = ['peaches', 'bananas', 'papaya', 'supercity'];
var myString = 'I want some papaya and some peaches';
var regexFromMyArray = new RegExp(myArray.toString().replace(/,/g, '|'), 'gi');
var matches = myString.match(regexFromMyArray) || [];
if (matches.length) {
for (var i = 0, l = matches.length; i < l; i++) {
console.log('Found: ' + matches[i]);
}
}
hiệu suất là quan trọng ở đây, vì vậy hãy javascript đơn giản.
Vâng, tôi đoán bạn thực sự nên đề cập đến nhu cầu thoát khỏi chuỗi đầu vào trong trường hợp chúng chứa ký tự regexp đặc biệt. Ngoài ra, nếu OP rất lo lắng về hiệu suất, anh ta nên ít lo lắng về chi phí một lần của việc xây dựng regexp, và lo lắng hơn về hiệu suất phù hợp thực tế. Từ quan điểm đó, bạn có thể lựa chọn hiệu suất của regexps so với cách tiếp cận của việc kiểm tra từng chuỗi riêng lẻ? –
@torazaburo Tôi chắc chắn. Bởi * Từ quan điểm đó, bạn có thể lựa chọn hiệu suất của regexps so với cách tiếp cận của việc kiểm tra từng chuỗi riêng lẻ? * Bạn có nghĩa là 'indexOf'? –
Như thường lệ, câu trả lời tốt phụ thuộc vào kích thước của mảng ... Tôi đã thực hiện một [jsperf với cả hai nguồn của bạn và triển khai thực hiện của tôi với indexOf] (http://jsperf.com/match-on-string-an-array -những khả năng) ... có vẻ tốt hơn. –