2010-10-12 10 views
11

Duplicar posible:
passing variable to a regexp in javascriptInserta una cadena en un RegExp existente en Javascript?

I tienen una variable:

resource = "user"; 

quiero insertar esa variable en una expresión regular predefinido (en sustitución de la variable por debajo):

/^\/variable\/\d+$/ 

¿Cómo podría hacer eso?

+2

gran cantidad de duplicados, entre otros: [ pasar variable a una expresión regular en javascript] (http://stackoverflow.com/questions/487509/passing-variable-to-a-regexp-in-javascript) –

Respuesta

24

utilizar el constructor de RegExp:

var re = new RegExp("^\\/" + resource + "\\/\\d+$"); 

en cuenta que necesita para escapar de los delimitadores / dos veces, una para la expresión regular y una vez para la declaración de cadena

También puede ser que desee utilizar alguna función de escape para citar cuerdas para ser utilizado en expresiones regulares:

function quote(str) { 
    return str.replace(/(?=[\/\\^$*+?.()|{}[\]])/g, "\\"); 
} 

Eso nos lleva a esto:

var re = new RegExp("^\\/" + quote(resource) + "\\/\\d+$"); 
6

Debería poder hacer esto.

var resource = "user"; 
var regex = new RegExp("^\/"+resource+"\/\d+$", "g"); 

A continuación, puede pasar el objeto RegExp a funciones como myString.replace() o llamar al método del propio objeto RegExp exec().

+0

Eliminar los delimitadores y está bien. – Gumbo

+0

¡Ups, gracias! –

+0

+1 para decir qué hacer con el objeto RegExp :) –

3

Puede utilizar el new RegExp método:

var resource = "user"; 
new RegExp("^\/"+resource+"\/\d+$"); 
Cuestiones relacionadas