64 votes

javascript - correspondance d'une chaîne de caractères avec le tableau d'expressions régulières

Existe-t-il un moyen en JavaScript d'obtenir une valeur booléenne pour une correspondance de la chaîne avec le tableau d'expressions régulières ?

L'exemple serait le suivant (où l'instruction "if" représente ce que j'essaie d'obtenir) :

var thisExpressions = [ '/something/', '/something_else/', '/and_something_else/'];
var thisString = 'else';

if (matchInArray(thisString, thisExpressions)) {

}

1voto

user1429980 Points 1090

Envisagez de diviser ce problème en deux parties :

  1. filter les articles qui match l'expression régulière donnée
  2. déterminer si cette liste filtrée a 0 les allumettes qui s'y trouvent

    const sampleStringData = ["frog", "pig", "tiger"];

    const matches = sampleStringData.filter((animal) => /any.regex.here/.test(animal));

    if (matches.length === 0) { console.log("No matches"); }

0voto

Mubeen Khan Points 667
let expressions = [ '/something/', '/something_else/', '/and_something_else/'];

let str = 'else';

ici sera la vérification des expressions suivantes :

if( expressions.find(expression => expression.includes(str) ) ) {

}

en utilisant la méthode Array .find() pour parcourir le tableau et .include pour vérifier la sous-chaîne.

0voto

aljgom Points 1116

Si vous souhaitez utiliser String.match() Dans le cas où votre tableau contient à la fois des chaînes de correspondance et des expressions régulières, vous pouvez effectuer les opérations suivantes

let str = "The quick brown fox";
let matches = ["fox", "The.*fox", /the.*fox/i];
let strInMatches = matches.some(match => str.match(match));
console.log(strInMatches);

-2voto

Mod Points 1

Nous créons donc une fonction qui prend une chaîne littérale et le tableau que nous voulons parcourir. Elle renvoie un nouveau tableau avec les correspondances trouvées. Nous créons un nouvel objet regexp à l'intérieur de cette fonction, puis nous exécutons une String.search sur chaque élément du tableau. Si elle est trouvée, elle pousse la chaîne dans un nouveau tableau et renvoie.

// literal_string: a regex search, like /thisword/ig
// target_arr: the array you want to search /thisword/ig for.

function arr_grep(literal_string, target_arr) {
  var match_bin = [];
  // o_regex: a new regex object.
  var o_regex = new RegExp(literal_string);
  for (var i = 0; i < target_arr.length; i++) {
    //loop through array. regex search each element.
    var test = String(target_arr[i]).search(o_regex);
    if (test > -1) {
    // if found push the element@index into our matchbin.
    match_bin.push(target_arr[i]);
    }
  }
  return match_bin;
}

// arr_grep(/.*this_word.*/ig, someArray)

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