2009-07-27 27 views
9

Dizenin bir bölümünü eşleştirmeye çalışıyorum ve büyük/küçük harfe duyarlı DEĞİL olmamalıdır. Aşağıdaki koda sahibim ama değiştirilen dizeyi asla alamıyorum.JavaScript Regex Yoksayma Durumu

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

searchText değişkeni "moha" veya "mo" veya "moh" olacaktır.

Eşleşen şeyi kalın etiketlerde nasıl edinebilirim?

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

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

DÜZENLEME: -

+0

ne ile SEARCHTEXT değiştirmek istiyor musunuz? Literal string 'searchText' ya da başka bir şey? – SolutionYogi

cevap

20

/desen Nevermind, aradığını muhtemelen budur. (Bu konuda% 100 emin değilim.)

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 deneyin:

Eklendi Yukarıdaki kod demo sayfası.

Demo →

Code

+1

Siz ** RegExp'leri parantez ile oluşturmak zorunda değilsiniz –

+1

Maçı eşleştirmek ve ve etiketleriyle çevrelemek istiyor. Parantez olmadan yakalama yapamazsınız. – SolutionYogi

+0

Evet, arama dizesi, çevreleyen etiketleri değiştirirken aynı olabilir. –

3

Ben Bir dinamik normal ifadeyi oluşturur yeni RegExp, aradığınız ne düşündüğünü şimdi yapmaya çalıştığını (bir regexp'in nesne) bir dize olup verecek Aslında Bu bunu bir edebi olarak koymak ne zaman/böyle dize oluşturmak değilse anlamı vardır^

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

heh, Aradığın şeyle kendimi karıştırdım - bu antrenmanlardan herhangi birini bilmeme izin ver. –

+0

İlk kez haklıydın :) Bu bir maçın yerine geçiyor –