106 votes

JavaScript - Utilisation d'une variable dans une correspondance de chaîne

J'ai trouvé plusieurs questions similaires, mais cela ne m'a pas aidé. J'ai donc ce problème :

var xxx = "victoria";
var yyy = "i";
alert(xxx.match(yyy/g).length);

Je ne sais pas comment passer une variable dans la commande match. Veuillez m'aider. Merci.

215voto

Chris Hutchinson Points 3015

Bien que la fonction match n'accepte pas les littéraux de chaîne comme motifs regex, vous pouvez utiliser le constructeur de l'objet RegExp et le passer à la fonction String.match :

var re = new RegExp(yyy, 'g');
xxx.match(re);

Tous les drapeaux dont vous avez besoin (comme /g) peuvent aller dans le deuxième paramètre.

12voto

Anpher Points 3362

Vous devez utiliser Objet RegExp si votre motif est une chaîne de caractères

var xxx = "victoria";
var yyy = "i";
var rgxp = new RegExp(yyy, "g");
alert(xxx.match(rgxp).length);

Si le motif n'est pas une chaîne dynamique :

var xxx = "victoria";
var yyy = /i/g;
alert(xxx.match(yyy).length);

10voto

Driton Haxhiu Points 119

Par exemple :

let myString = "Hello World"
let myMatch = myString.match(/H.*/)
console.log(myMatch)

Ou

let myString = "Hello World"
let myVariable = "H"
let myReg = new RegExp(myVariable + ".*")
let myMatch = myString.match(myReg)
console.log(myMatch)

6voto

Exemple. Pour trouver le nombre de voyelles dans la chaîne de caractères

var word='Web Development Tutorial';
var vowels='[aeiou]'; 
var re = new RegExp(vowels, 'gi');
var arr = word.match(re);
document.write(arr.length);

0voto

geekbuntu Points 183

Pour moi en tout cas, ça aide de le voir utilisé. Je viens de faire ça en utilisant l'exemple "re" :

var analyte_data = 'sample-'+sample_id;
var storage_keys = $.jStorage.index();
var re = new RegExp( analyte_data,'g');  
for(i=0;i<storage_keys.length;i++) { 
    if(storage_keys[i].match(re)) {
        console.log(storage_keys[i]);
        var partnum = storage_keys[i].split('-')[2];
    }
}

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