2010-10-12 6 views
11

Possible en double:
passing variable to a regexp in javascriptInsérer une chaîne dans un RegExp existant en Javascript?

I ont une variable:

resource = "user"; 

Je souhaite insérer cette variable dans une expression rationnelle prédéfini (en remplacement de la variable au-dessous):

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

Comment pourrais-je faire cela?

+2

beaucoup de doublons, entre autres: [ passer une variable à un regexp en javascript] (http://stackoverflow.com/questions/487509/passing-variable-to-a-regexp-in-javascript) –

Répondre

24

Utilisez le constructeur de RegExp:

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

Notez que vous devez échapper aux délimiteurs / deux fois, une fois pour l'expression régulière et une fois pour la déclaration de chaîne.

Vous aussi pouvez utiliser une fonction d'échappement pour citer les chaînes à utiliser dans les expressions régulières:

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

Cela nous conduit à ceci:

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

Vous devriez être en mesure de le faire.

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

Vous pouvez ensuite passer l'objet RegExp à des fonctions comme myString.replace() ou appeler la méthode exec() de l'objet RegExp lui-même.

+0

Supprimer les délimiteurs et c'est bien. – Gumbo

+0

Oups, merci! –

+0

+1 pour dire quoi faire avec l'objet RegExp :) –

3

Vous pouvez utiliser la méthode new RegExp:

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