2009-07-27 38 views
9

Tôi đang cố gắng khớp một phần của chuỗi và không được phân biệt chữ hoa chữ thường. Tôi có đoạn mã sau nhưng tôi không bao giờ nhận được chuỗi thay thế.JavaScript Trường hợp bỏ qua Regex

var name = 'Mohammad Azam' 
var result = name.replace('/' + searchText + '/gi', "<b>" + searchText + "</b>"); 

Biến tìm kiếm sẽ là "moha" hoặc "mo" hoặc "moh".

Làm cách nào để có được điều phù hợp trong thẻ in đậm.

+0

gì làm bạn muốn thay thế searchText với? Chuỗi chữ 'searchText' hay cái gì khác? – SolutionYogi

Trả lời

20

/pattern/có nghĩa là khi nó được đặt dưới dạng chữ, không phải nếu bạn xây dựng chuỗi như vậy. (Tôi không chắc chắn 100% về điều đó.)

Hãy thử

var name = 'Mohammad Azam'; 
var searchText = 'moha'; 
var result = name.replace(new RegExp('(' + searchText + ')', 'gi'), "<b>$1</b>"); 
//result is <b>Moha</b>mmad Azam 

EDIT:

Added trang demo cho các mã trên.

Demo →

Code

+1

Bạn ** không ** phải xây dựng RegExp với dấu ngoặc đơn –

+1

Anh ấy muốn nắm bắt kết quả phù hợp và bao quanh nó với các thẻ . Bạn không thể chụp mà không có dấu ngoặc đơn. – SolutionYogi

+0

Có thể khi chuỗi tìm kiếm giống hệt với các thẻ xung quanh thay thế. –

3

Tôi nghĩ rằng bạn đang tìm kiếm mới RegExp, mà tạo ra một biểu hiện thường xuyên động - những gì bạn đang cố gắng để làm bây giờ là phù hợp với một chuỗi (không phải là một đối tượng regexp):

var name = 'Mohammad Azam', searchText='moha'; 

var result = name.replace(new RegExp(searchText, 'gi'), "" + searchText + ""); result 

EDIT: Trên thực tế , đây có lẽ là những gì bạn đang tìm kiếm, không bao giờ là^

var name = 'Mohammad Azam', searchText='moha'; 
name.match(new RegExp(searchText , 'gi'))[0] 
name // "Moha" 
+0

heh, tôi bối rối với những gì bạn đang tìm kiếm - hãy cho tôi biết nếu một trong những tập luyện đó. –

+0

Bạn đã đúng lần đầu tiên :) Đó là một thay thế không phù hợp với –

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