Регистр без учета регистра в 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();
Я бы также назвал это более легким для чтения и понимания намерений автора!