Maison >interface Web >js tutoriel >Comment puis-je créer dynamiquement des expressions régulières avec des variables en JavaScript ?
Expressions régulières dynamiques avec variables en JavaScript
Les expressions régulières de JavaScript fournissent un outil puissant pour la correspondance et la manipulation de modèles. Cependant, l'insertion de variables dans ces modèles peut être un défi.
Considérez l'extrait de code suivant :
function(input) { var testVar = input; string = ... string.replace(/ReGeX + testVar + ReGeX/, "replacement") }
Ce code tente de remplacer toutes les occurrences d'un modèle spécifique dans une chaîne par un chaîne de remplacement. Cependant, cela échouera, car vous ne pouvez pas concaténer directement une variable dans une expression régulière.
Solution : Utilisation de chaînes de modèles
Dans ES6 JavaScript, vous pouvez utiliser des chaînes de modèles pour créer dynamiquement une expression régulière avec une variable. Voici comment procéder :
const regex = new RegExp(`ReGeX${testVar}ReGeX`); ... string.replace(regex, "replacement");
Dans cet exemple, le constructeur RegExp accepte une chaîne de modèle comme premier argument. La chaîne du modèle contient le modèle d'expression régulière d'origine avec la variable interpolée testVar. Les backticks (``) indiquent une chaîne de modèle.
ES6 vs Pre-ES6
Avant ES6, vous deviez utiliser une méthode plus détaillée pour obtenir le même résultat. résultat :
var regex = new RegExp("ReGeX" + testVar + "ReGeX"); ... string.replace(regex, "replacement");
L'ancienne syntaxe fonctionne toujours, mais la méthode de chaîne de modèle est préférée pour sa simplicité et sa lisibilité.
Attention : échappement des variables
Il est crucial de noter que si la variable que vous insérez contient un contenu potentiellement malveillant (par exemple, une entrée utilisateur), vous devez y échapper pour éviter les attaques par injection. Les fonctions escape() ou encodeURIComponent() peuvent être utilisées pour s'échapper.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!