2009-07-27 17 views
9

Estoy tratando de hacer coincidir una parte de la cadena y no debe ser sensible a mayúsculas y minúsculas. Tengo el siguiente código pero nunca recibo la cadena reemplazada.JavaScript Regex Ignore Case

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

La variable del texto de búsqueda será "moha" o "mo" o "moh".

¿Cómo puedo obtener la coincidencia en negrita?

+0

¿Qué desea reemplazar con searchText? Cadena literal 'searchText' u otra cosa? – SolutionYogi

Respuesta

20

/patrón/ha es decir, cuando se trata de poner en como un literal, no se si se construye la cadena como esa. (No estoy 100% seguro de eso.)

Trate

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:

añadido la página de demostración para el código de seguridad.

Demo →

Code

+1

** No ** tienes que construir RegExp's con un paréntesis –

+1

Quiere capturar la coincidencia y rodearla con las etiquetas y. No se puede hacer la captura sin paréntesis. – SolutionYogi

+0

Sí, puede hacerlo cuando la cadena de búsqueda es idéntica a la de reemplazo sin las etiquetas que lo rodean. –

3

Creo que estás en busca de nuevos RegExp, lo que crea una expresión regular dinámico - lo que estás tratando de hacer ahora es coincidir con una cadena (no un objeto de expresión regular):

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

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

EDIT: En realidad , esto es probablemente lo que estaba buscando, no importa^

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

heh, me confundí con lo que estabas buscando, avísame si alguno de esos ejercicios. –

+0

Tenías razón la primera vez :) Es un reemplazo no es una coincidencia –