Регистр без учета регистра в javascript

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

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

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

5 ответов

Решение

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

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

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

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

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

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

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

Например, для поиска даты в слове в верхнем или нижнем регистре вам нужно добавить параметр i

i = означает нечувствительный

пример

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

или

      const value = "some text with dAtE";
 new RegExp("/date/","i");

Просто альтернативное предложение: когда вы обнаружите, что достигли "регулярного выражения без учета регистра", вы обычно можете добиться того же, просто управляя регистром сравниваемых строк:

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

Я бы также назвал это более легким для чтения и понимания намерений автора!

Другие вопросы по тегам