Quiero agregar una etiqueta (variable) a los valores con expresiones regulares, el patrón funciona bien con PHP pero tengo problemas para implementarlo en JavaScript.
El patrón es ( valuees la variable):
/(?!(?:[^<]+>|[^>]+<\/a>))\b(value)\b/is
Escapé de las barras invertidas:
var str = $("#div").html();
var regex = "/(?!(?:[^<]+>|[^>]+<\\/a>))\\b(" + value + ")\\b/is";
$("#div").html(str.replace(regex, "<a href='#" + value +">" + value + "</a>"));
Pero esto parece no estar bien, registré el patrón y es exactamente lo que debería ser. ¿Algunas ideas?
javascript
regex
string
Borstenhorst
fuente
fuente

valueuna variable?Respuestas:
Para crear la expresión regular a partir de una cadena, debe usar el
RegExpobjeto de JavaScript .Si también desea hacer coincidir / reemplazar más de una vez, debe agregar la
gmarca (coincidencia global) . He aquí un ejemplo:Demostración de JSFiddle aquí.
En el caso general, escape la cadena antes de usarla como expresión regular:
Sin embargo, no todas las cadenas son expresiones regulares válidas: hay algunos caracteres especiales, como
(o[. Para solucionar este problema, simplemente escape la cadena antes de convertirla en una expresión regular. Una función de utilidad para eso va en el siguiente ejemplo:Demostración de JSFiddle aquí.
Nota: la expresión regular en la pregunta usa el
smodificador, que no existía en el momento de la pregunta, pero existe , un indicador / modificadors( dotall ) en JavaScript, hoy .fuente
smodificador, vea nuevamente el enlace MDN en la nota de respuesta.Si está intentando utilizar un valor de variable en la expresión, debe utilizar el "constructor" de RegExp.
fuente
No necesitas
"definir una expresión regular, así que solo:Si
valuees una variable y desea una expresión regular dinámica, entonces no puede usar esta notación; utilice la notación alternativa.String.replacetambién acepta cadenas como entrada, por lo que puede hacer"fox".replace("fox", "bear");Alternativa:
Tenga en cuenta que si
valuecontiene caracteres de expresiones regulares como(,[y?tendrá que escapar de ellos.fuente
Encontré este hilo útil, así que pensé en agregar la respuesta a mi propio problema.
Quería editar un archivo de configuración de base de datos (datastax cassandra) desde una aplicación de nodo en javascript y para una de las configuraciones en el archivo necesitaba hacer coincidir en una cadena y luego reemplazar la línea que la sigue.
Esta fue mi solución.
Después de ejecutarse, cambiará la configuración del directorio de datos existente a la nueva:
archivo de configuración antes:
archivo de configuración después de:
fuente
Descubrí que tenía que hacer doble barra \ b para que funcionara. Por ejemplo, para eliminar las palabras "1x" de una cadena usando una variable, necesitaba usar:
fuente
Manera mucho más fácil: use literales de plantilla.
fuente
https://jsfiddle.net/9f0mb6Lz/
Espero que esto ayude
fuente