2011-11-15 5 views
0

J'essaye de faire une fonction avec l'expression régulière [javascript].Passer la valeur à Regex

Veuillez jeter un coup d'œil.

function ReplaceIt(key) 
{ 
var KeyCode = /.body\s*\{([^\}]*?)\}/m; // i want to replace the body to the key 
} 

var key ="h1"; 
ReplaceIt(key); 

de sorte que le résultat final sera

var Keycode = /.h1\s*\{([^\}]*?)\}/m; 

Je suis un peu novice peu avec javascript et je ne sais pas comment chercher d'autres ressources.

Note: Amis, pourquoi supprimez-vous les réponses? Chaque commentaire/réponse nous aide à nous améliorer, mais nous choisirons la réponse la plus appropriée/la meilleure, ne supprimez pas les commentaires/réponses.

Répondre

3

Vous pouvez utiliser RegExp avec une chaîne pour créer votre expression régulière. Si vous construisez l'expression régulière de cette façon, vous devriez échapper tout '\'. Ainsi, votre fonction pourrait ressembler à:

function ReplaceIt(key) 
{ 
    return RegExp('.'+key+'\\s*\\{([^\\}]*?)\\}','m'); 
} 
var reKey = ReplaceIt('h1'); //=> /.h1\s*\{([^\}]*?)\}/m 
+0

ont quelques problèmes avec ce http://jsfiddle.net/jitheshkt/s2DJR/24/ – Red

+0

Dans votre jsFiddle, vous ne l'avez pas échapper « \ » dans 're = new RegExp ('.' + Touche + '\ s * \ {([^ \}] *?) \}', 'M'); '. Utilisez 're = new RegExp ('.' + Key + '\\ s * \ {([^ \\}]??) \\}', 'm')'; – KooiInc

+0

'Erreur: Problème à la ligne 1 caractère 36: Mauvais échappement. var re = RegExp ('.' + 'H' + '\\ s * \ {([^ \\}]??) \\}', 'm'); ' – Red

Questions connexes