131

I want to extract a query string from my URL using JavaScript, and I want to do a case insensitive comparison for the query string name. Here is what I am doing:

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

But the above code does a case sensitive search. I tried /<regex>/i but it did not help. Any idea how can that be achieved?

Ninjakannon
  • 3,551
  • 6
  • 50
  • 70
Amit
  • 23,266
  • 25
  • 73
  • 110
  • 5
    That literal format **/regex/i** should work, unless you tried to concatenate it or something... – Alex Oct 25 '14 at 15:40

5 Answers5

232

You can add 'i' modifier that means "ignore case"

var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);
Michał Niklas
  • 50,951
  • 17
  • 64
  • 108
48

modifiers are given as the second parameter:

new RegExp('[\\?&]' + name + '=([^&#]*)', "i")
Brad Mace
  • 26,397
  • 17
  • 98
  • 144
7

Simple one liner. In the example below it replaces every vowel with an X.

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

replaceWithRegex('HEllo there', /[aeiou]/gi, 'X'); //"HXllX thXrX"
Diego Fortes
  • 7,095
  • 3
  • 24
  • 37
4

Just an alternative suggestion: when you find yourself reaching for "case insensitive regex", you can usually accomplish the same by just manipulating the case of the strings you are comparing:

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

I would also call this easier to read and grok the author's intent!

mecampbellsoup
  • 1,012
  • 14
  • 12
1

For example to search word date, upper or lowercase you need to add param i

i = means incasesensitive

example

const value = "some text with dAtE";
/date/i.test(value)

or

const value = "some text with dAtE";
 new RegExp("/date/","i");
dawid debinski
  • 126
  • 1
  • 4