154 votes

Regex insensible à la casse en JavaScript

Je veux extraire une chaîne de requête de mon URL en utilisant JavaScript, et je veux faire une comparaison insensible à la casse pour le nom de la chaîne de requête. Voici ce que je fais :

var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href);
if (!results) { return 0; }
return results[1] || 0;

Mais le code ci-dessus effectue une recherche sensible à la casse. J'ai essayé /<regex>/i mais cela n'a pas aidé. Avez-vous une idée de la manière dont cela peut être réalisé ?

6 votes

Ce format littéral /regex/i devrait fonctionner, à moins que vous n'ayez essayé de le concaténer ou autre...

257voto

Michał Niklas Points 15907

Vous pouvez ajouter le modificateur 'i' qui signifie "ignorer le cas".

var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);

3 votes

Y a-t-il un moyen d'en faire une seule chaîne ?

29 votes

@CardinalSystem /abc/i

51voto

Brad Mace Points 12173

Les modificateurs sont donnés comme deuxième paramètre :

new RegExp('[\\?&]' + name + '=([^&#]*)', "i")

2 votes

Ou new RegExp('^' + string + '$', "i")

9voto

PossessWithin Points 532

Un seul mot. Dans l'exemple ci-dessous, il remplace chaque voyelle par un X.

function replaceWithRegex(str, regex, replaceWith) {
  return str.replace(regex, replaceWith);
}

replaceWithRegex('HEllo there', /[aeiou]/gi, 'X'); //"HXllX thXrX"

4voto

mecampbellsoup Points 41

Une suggestion alternative : lorsque vous vous retrouvez à utiliser une "regex insensible à la casse", vous pouvez généralement accomplir la même chose en manipulant la casse des chaînes que vous comparez :

const foo = 'HellO, WoRlD!';
const isFoo = 'hello, world!';
return foo.toLowerCase() === isFoo.toLowerCase();

Je dirais aussi que c'est plus facile à lire et à comprendre l'intention de l'auteur !

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