84 votes

Combiner des expressions régulières en Javascript

Est-il possible de combiner des expressions régulières en javascript.

Par exemple :

  var lower = /[a-z]/;
 var upper = /[A-Z]/;
 var alpha = upper|lower;//Is this possible?

c'est à dire. puis-je affecter des expressions régulières à des variables et combiner ces variables en utilisant des caractères de correspondance de modèle comme nous faisons dans les expressions régulières

88voto

Bry6n Points 1669

La réponse est oui! Vous devez initialiser la variable sous la classe RegExp :

 var lower = new RegExp(/--RegexCode--/);
var upper = new RegExp(/--RegexCode--/);

par conséquent, regex peut être créé dynamiquement. Après création :

 "sampleString".replace(/--whatever it should do--/);

Ensuite, vous pouvez les combiner normalement, oui.

 var finalRe = new RegExp(lower.source + "|" + upper.source);

38voto

georg Points 52691

Si les expressions régulières ne sont pas connues à l'avance,

 var one = /[a-z]/;
var two = /[A-Z]/;

var one_or_two = new RegExp("(" + one.source + ")|(" + two.source + ")")

8voto

Ben Carp Points 1515

utiliser une fonction générale :

 const getComposedRegex = (...regexes) => new RegExp(regexes.map(regex => regex.source).join("|"))

Ensuite, appelez-le avec n'importe quel nombre de Regex.

 const reg1 = /[w]{3}/i
const reg2 = /http/i

const composedReg = getComposedRegex(reg1, reg2)

2voto

Esailija Points 74052
alpha = new RegExp( lower.source + "|" + upper.source );
console.log( alpha );
// /[a-z]|[A-Z]/

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