132 votes

Génération dynamique d'expressions régulières Javascript à partir de variables ?

Comment construire deux modèles de regex en un seul ?

Par exemple, j'ai un motif long et un plus petit, je dois en mettre un plus petit devant un long.

 var pattern1 = ':\(|:=\(|:-\(';
var pattern2 = ':\(|:=\(|:-\(|:\(|:=\(|:-\('
str.match('/'+pattern1+'|'+pattern2+'/gi');

Cela ne fonctionne pas. Lorsque je concaténe des chaînes, toutes les barres obliques ont disparu.

29voto

adarshr Points 25912

Utilisez ce qui suit :

 var regEx = new RegExp(pattern1+'|'+pattern2, 'gi');

str.match(regEx);

13voto

alex Points 186293

Vous devez renoncer au littéral regex et utiliser le constructeur d'objet, où vous pouvez passer le regex sous forme de chaîne.

 var regex = new RegExp(pattern1+'|'+pattern2, 'gi');
str.match(regex);

3voto

Vinoth Narayan Points 200

Le constructeur RegExp crée un objet d'expression régulière pour faire correspondre le texte avec un modèle.

     var pattern1 = ':\\(|:=\\(|:-\\(';
    var pattern2 = ':\\(|:=\\(|:-\\(|:\\(|:=\\(|:-\\(';
    var regex = new RegExp(pattern1 + '|' + pattern2, 'gi');
    str.match(regex);

Le code ci-dessus fonctionne parfaitement pour moi...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X