validar solo regulares regular probar palabra numeros nombre expresiones expresion example exacta especiales espacio ejemplos caracteres blanco alfanumerico javascript regex

solo - pasando variable a una expresión regular en javascript



probar expresiones regulares (4)

Posible duplicado:
Cadena de escape para usar en Javascript regex

Tengo un mensaje como este:

Máximo {0} caracteres permitidos en {1}

Y tengo una función para crear un mensaje usando los argumentos pasados ​​como

for(var i = 0; i < agrs.length; i++){ reg = new RegExp(''/{''+i+''/}'', ''gi''); key = key.replace(reg,agrs[i]) }

El problema es que no puede tomar el parámetro i para crear la regla exp.

¿Cuál es la manera de lograr esto?


Creo que su segunda línea se supone que es

reg = new RegExp(''/{''+i+''/}'', ''gi'');

pero no sé si ese es su único problema o no.


Le recomiendo encarecidamente que utilice la forma funcional de String.replace() para resolver su problema, en lugar de intentar parametrizar la String.replace() en for-loop que itere sobre {0}, {1}, etc.

En otras palabras, en lugar de buscar ''{0}'' o ''{1}'', simplemente busque ''{([0-9] +)}'' (es decir {} rodeando un número arbitrario, y pase una función a la función replace () para reemplazar inteligentemente estas expresiones en función del número entre {} ''s. Esto le permite usar un literal RegExp que puede escribir como / {([0-9] +)} / en lugar de perder el tiempo con personajes de escape en cuerdas.

Algo como esto:

s=''the song says {0} little {1} little {2} little-endians''; args=[''zero'',''one'',''two'']; new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch) {return args[(+firstmatch)]; } );

cuyos rendimientos

the song says zero little one little two little-endians

Ver esta pregunta similar .

editar: si quieres dejar solo los elementos que son más grandes que la longitud de tu lista de args , asegúrate de verificar la cordura del número de parámetro:

s=''the song says {0} little {1} little {2} little-endians,/n''+ '' {3} little {4} little {5} little-endians''; args=[''zero'',''one'',''two'']; new_string = s.replace(/{([0-9]+)}/g, function(wholematch,firstmatch) {var i = +firstmatch; return i < args.length ? args[i] : wholematch;} );

cuyos rendimientos

the song says zero little one little two little-endians, {3} little {4} little {5} little-endians


Su expresión regular es /{0}/gi ya que la crea desde una cadena. Y no es una expresión válida. Necesitas escapar {en la expresión regular porque tiene un significado especial en la sintaxis de expresiones regulares, por lo que debería ser:

new RegExp(''//{''+i+''//}'', ''gi'');

que es ///{0//}/gi . Necesitas escapar del escape // en la cadena.