2009-07-27 17 views
9

Próbuję dopasować część łańcucha i NIE powinien być w niej rozróżniany wielkość liter. Mam następujący kod, ale nigdy nie otrzymuję zastępowanego ciągu.JavaScript Regex Ignoruj ​​obudowę

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

Zmienna szukanego tekstu będzie miała wartość "moha" lub "mo" lub "moh".

Jak uzyskać pasujące elementy w wytłuszczonych znacznikach.

+0

Co chcesz wymienić searchText z? Literalny ciąg "searchText" lub coś innego? – SolutionYogi

Odpowiedz

20

/wzorzec/ma sens, gdy jest wprowadzenie jako dosłowne, nie jeśli skonstruować ciąg tak. (Nie jestem pewien na 100%, że.)

Spróbuj

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:

Dodany strona demo dla powyższego kodu.

Demo →

Code

+1

Nie musisz ** konstruować RegExp za pomocą nawiasu –

+1

Chce on przechwycić mecz i otoczyć go znacznikami i. Nie można wykonać przechwytywania bez nawiasów. – SolutionYogi

+0

Tak, można, gdy ciąg wyszukiwania jest identyczny z zamiennikiem sans otaczających tagów. –

3

myślę szukasz nowego RegExp, która tworzy dynamiczne wyrażenie regularne - co próbujesz zrobić, to dopasować ciąg (a nie obiektu RegExp):

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

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

EDIT: Faktycznie jest to prawdopodobnie to, czego szukaliśmy, nieważne^

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

heh, pomyliłem się z tym, czego szukałeś - daj mi znać, jeśli któryś z tych treningów. –

+0

Miałeś rację za pierwszym razem :) Jest to zastępowanie nie pasujące –

Powiązane problemy