2012-04-10 30 views
8

Tôi có một regex để kiểm tra xem chuỗi có chứa một từ cụ thể hay không. Nó hoạt động như mong đợi:Kiểm tra regex JavaScript nếu chuỗi chứa từ cụ thể (có biến)

/\bword\b/.test('a long text with the desired word amongst others'); // true 
/\bamong\b/.test('a long text with the desired word amongst others'); // false 

Nhưng tôi cần từ sắp được kiểm tra trong một biến. Sử dụng new RegExp không hoạt động đúng cách, nó luôn luôn trả false:

var myString = 'a long text with the desired word amongst others'; 

var myWord = 'word'; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

myWord = "among"; 
new RegExp('\b' + myWord + '\b').test(myString); // false 

là gì sai ở đây?

Trả lời

20
var myWord = 'word'; 
new RegExp('\\b' + myWord + '\\b') 

Bạn cần phải thoát kép \ khi tạo regex từ chuỗi.


Điều này là do \ bắt đầu chuỗi thoát bằng chữ, vì vậy nó không bao giờ chuyển sang regex. Bằng cách thực hiện \\, bạn bao gồm ký tự '\' theo nghĩa đen trong chuỗi, làm cho số regex /\bword\b/.

+1

+1, xem http://jsfiddle.net/TxQ7c/6/ –

+1

Đã tìm ra cùng một lúc bạn đã đăng câu trả lời của mình. Cảm ơn bạn. – Alp

+0

\ b sẽ không hoạt động với tất cả các ngôn ngữ – Uri

Các vấn đề liên quan