Регулярное выражение без учета регистра в JavaScript

121

Я хочу извлечь строку запроса из своего URL-адреса с помощью JavaScript, и я хочу провести сравнение имени строки запроса без учета регистра. Вот что я делаю:

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

Но приведенный выше код выполняет поиск с учетом регистра. Я пробовал, /<regex>/iно это не помогло. Есть идеи, как этого добиться?

Amit
источник
5
Этот буквальный формат / regex / i должен работать, если вы не пытались объединить его или что-то в этом роде ...
Alex

Ответы:

211

Вы можете добавить модификатор "i", что означает "игнорировать регистр".

var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);
Михал Никлас
источник
2
В любом случае, я сделаю это одной строкой?
Кардинал - Восстановите Монику
11
@CardinalSystem/abc/i
aross
42

модификаторы задаются вторым параметром:

new RegExp('[\\?&]' + name + '=([^&#]*)', "i")
Брэд Мейс
источник
илиnew RegExp('^' + string + '$', "i")
Вадим
6

Простой лайнер. В приведенном ниже примере он заменяет каждую гласную буквой X.

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

replaceWithRegex('HEllo there', /[aeiou]/gi, 'X'); //"HXllX thXrX"
Диего Фортес
источник