Regular expressions cũng tốt miễn là từ khóa này là thực sự từ, bạn chỉ có thể sử dụng một constructor RegExp thay vì một chữ để tạo ra một từ một biến:
var re= new RegExp('('+word+')', 'gi');
return s.replace(re, '<b>$1</b>');
Khó khăn nảy sinh nếu 'từ khóa 'có thể có dấu chấm câu, vì dấu chấm câu có xu hướng có ý nghĩa đặc biệt trong regexps. Thật không may, không giống như hầu hết các ngôn ngữ/thư viện khác có hỗ trợ regexp, không có hàm chuẩn để thoát khỏi dấu chấm câu cho regexps trong JavaScript.
Và bạn không thể được hoàn toàn chắc chắn chính xác những gì nhân vật cần phải thoát vì không thực hiện của mỗi trình duyệt của regexp là đảm bảo được giống hệt nhau. (Đặc biệt, trình duyệt mới hơn có thể thêm chức năng mới.) Và xuyệc ngược-thoát nhân vật mà không phải là đặc biệt không đảm bảo vẫn làm việc, mặc dù trong thực tế nó làm.
Vì vậy, về là tốt nhất bạn có thể làm là một trong số:
- cố gắng để nắm bắt từng ký tự đặc biệt trong việc sử dụng trình duyệt phổ biến hiện nay [Địa chỉ: thấy công thức của Sebastian]
- xuyệc ngược-thoát khỏi tất cả các phi chữ cái và số. chăm sóc: \ W cũng sẽ khớp với các ký tự Unicode không phải ASCII mà bạn không thực sự muốn.
- chỉ cần đảm bảo rằng không có phi chữ cái và số vào từ khóa trước khi tìm kiếm
Nếu bạn đang sử dụng này để làm nổi bật từ trong HTML mà đã có đánh dấu, rắc rối, mặc dù bạn đã có. ‘Từ’ của bạn có thể xuất hiện trong một tên phần tử hoặc giá trị thuộc tính, trong trường hợp này cố gắng quấn < b> xung quanh nó sẽ gây ra sự hỏng hóc. Trong các kịch bản phức tạp hơn có thể thậm chí là một HTML-injection vào lỗ hổng bảo mật XSS. Nếu bạn phải đối phó với đánh dấu, bạn sẽ cần một cách tiếp cận phức tạp hơn, tách ra đánh dấu '< ...>' trước khi cố xử lý từng đoạn văn bản.
Tôi không nghĩ rằng ví dụ của bạn hoạt động. – tvanfosson
Tôi hiểu, chỉ có lần xuất hiện đầu tiên được thay thế. Không biết rằng thay thế cư xử như thế này. Các preg_quote là quan trọng nếu anh ta muốn làm nổi bật các chuỗi với/hoặc * hoặc các ký tự regex khác. – okoman
Um .. it * là * javascript. Tôi chỉ nói rằng có một hàm trong PHP được gọi là preg_quote. Sau đó, tôi bao gồm một phiên bản js của chức năng đó và một chức năng js ... những ví dụ mã * là * js – okoman