Así por ejemplo:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Pero esto, por supuesto, no funciona :) ¿Hay alguna manera de hacer esto?
javascript
regex
variables
Adán
fuente
fuente
Respuestas:
Actualizar
Según algunos de los comentarios, es importante tener en cuenta que es posible que desee escapar de la variable si existe la posibilidad de contenido malicioso (por ejemplo, la variable proviene de la entrada del usuario)
Actualización ES6
En 2019, esto generalmente se escribiría usando una cadena de plantilla, y el código anterior se ha actualizado. La respuesta original fue:
fuente
regex
expresión dinámica de código de país?/\w+\//i
conviertenew RegExp("\\w+/", "i")
Puede usar el objeto RegExp:
Entonces puedes construir
regexstring
de la forma que quieras.Puedes leer más sobre esto aquí .
fuente
Para construir una expresión regular a partir de una variable en JavaScript, deberá usar el
RegExp
constructor con un parámetro de cadena.Por supuesto, este es un ejemplo muy ingenuo. Se supone que
input
se ha escapado correctamente para una expresión regular. Si está tratando con la entrada del usuario, o simplemente desea que sea más conveniente que coincida con caracteres especiales, deberá escapar de caracteres especiales :fuente
ReGeX
texto. Entonces solía:return new RegExp(input, flags);
\\
representa un solo\
carácter,$&
es la subcadena coincidente .si está utilizando los literales de plantilla es6 son una opción ...
fuente
^[^\s]{${4},${32}}$
); export const validatePassword = value => value.match (newRegExp); `` `Siempre puede dar una expresión regular como cadena, es decir
"ReGeX" + testVar + "ReGeX"
. Posiblemente tenga que escapar de algunos caracteres dentro de su cadena (por ejemplo, comillas dobles), pero en la mayoría de los casos es equivalente.También puede usar el
RegExp
constructor para pasar banderas ( ver los documentos ).fuente
Puede crear expresiones regulares en JS de una de dos maneras:
/ab{2}/g
new RegExp("ab{2}", "g")
.Los literales de expresión regular son constantes y no se pueden usar con variables. Esto podría lograrse utilizando el constructor. La extracción del constructor RegEx es
Puede incrustar variables como parte de regularExpressionString. Por ejemplo,
Esto coincidirá con cualquier apariencia del patrón
cdcdcd
.fuente
Aquí hay una función bastante inútil que devuelve valores envueltos por caracteres específicos. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
fuente
la respuesta aceptada no funciona para mí y no sigue los ejemplos de MDN
ver la sección 'Descripción' en el enlace de arriba
Iría con lo siguiente, me está funcionando:
fuente
Solo es necesario preparar primero la variable de cadena y luego convertirla a RegEx.
por ejemplo:
Desea agregar
minLength
yMaxLength
con la variable a RegEx:ahora si cambia el valor de
MaxLength
oMinLength
, cambiará en todos los RegExs.Espero ser de utilidad. También lamento mi inglés.
fuente