Ainsi, par exemple:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Mais cela ne fonctionne bien sûr pas :) Existe-t-il un moyen de procéder?
Ainsi, par exemple:
function(input){
var testVar = input;
string = ...
string.replace(/ReGeX + testVar + ReGeX/, "replacement")
}
Mais cela ne fonctionne bien sûr pas :) Existe-t-il un moyen de procéder?
Réponses:
Mettre à jour
Selon certains des commentaires, il est important de noter que vous pouvez vouloir échapper à la variable s'il y a un potentiel de contenu malveillant (par exemple, la variable provient de la saisie de l'utilisateur)
Mise à jour ES6
En 2019, cela serait généralement écrit à l'aide d'une chaîne de modèle, et le code ci-dessus a été mis à jour. La réponse originale était:
la source
regex
expression/\w+\//i
devientnew RegExp("\\w+/", "i")
Vous pouvez utiliser l'objet RegExp:
Ensuite, vous pouvez construire
regexstring
comme vous le souhaitez.Vous pouvez en savoir plus ici .
la source
Pour créer une expression régulière à partir d'une variable en JavaScript, vous devrez utiliser le
RegExp
constructeur avec un paramètre de chaîne.bien sûr, c'est un exemple très naïf. Il suppose qu'il
input
a été correctement échappé pour une expression régulière. Si vous avez affaire à une saisie utilisateur ou si vous souhaitez simplement faciliter la mise en correspondance de caractères spéciaux, vous devrez échapper les caractères spéciaux :la source
ReGeX
texte. J'ai donc utilisé:return new RegExp(input, flags);
\\
représente un seul\
caractère,$&
est la sous-chaîne correspondante .si vous utilisez le modèle es6, les littéraux sont une option ...
la source
^[^\s]{${4},${32}}$
); export const validatePassword = value => value.match (newRegExp); ``Vous pouvez toujours donner une expression régulière sous forme de chaîne, c'est-à-dire
"ReGeX" + testVar + "ReGeX"
. Vous devrez peut-être échapper certains caractères à l'intérieur de votre chaîne (par exemple, les guillemets doubles), mais dans la plupart des cas, c'est équivalent.Vous pouvez également utiliser le
RegExp
constructeur pour passer des drapeaux ( voir la documentation ).la source
Vous pouvez créer des expressions régulières dans JS de deux manières:
/ab{2}/g
new RegExp("ab{2}", "g")
.Les littéraux d'expression régulière sont constants et ne peuvent pas être utilisés avec des variables. Cela pourrait être réalisé en utilisant le constructeur. La structure du constructeur RegEx est
Vous pouvez incorporer des variables dans le cadre de regularExpressionString. Par exemple,
Cela correspondra à toute apparence du motif
cdcdcd
.la source
Voici une fonction assez inutile qui retourne des valeurs enveloppées par des caractères spécifiques. :)
jsfiddle: https://jsfiddle.net/squadjot/43agwo6x/
la source
la réponse acceptée ne fonctionne pas pour moi et ne suit pas les exemples MDN
voir la section «Description» dans le lien ci-dessus
J'irais avec ce qui suit, cela fonctionne pour moi:
la source
Il suffit de préparer d'abord la variable de chaîne, puis de la convertir en RegEx.
par exemple:
Vous souhaitez ajouter
minLength
etMaxLength
avec la variable à RegEx:maintenant si vous changez la valeur de
MaxLength
ouMinLength
, cela changera dans tous les RegEx.J'espère être utile. Désolé aussi pour mon anglais.
la source