Wyrażenie regularne bez rozróżniania wielkości liter w JavaScript

121

Chcę wyodrębnić ciąg zapytania z mojego adresu URL za pomocą JavaScript i chcę wykonać porównanie bez rozróżniania wielkości liter dla nazwy ciągu zapytania. Oto co robię:

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

Ale powyższy kod przeprowadza wyszukiwanie z uwzględnieniem wielkości liter. Próbowałem, /<regex>/iale to nie pomogło. Masz jakiś pomysł, jak to osiągnąć?

Amit
źródło
5
Ten dosłowny format / regex / powinien działać, chyba że próbowałeś go połączyć lub coś takiego ...
Alex,

Odpowiedzi:

211

Możesz dodać modyfikator „i”, który oznacza „ignoruj ​​wielkość liter”

var results = new RegExp('[\\?&]' + name + '=([^&#]*)', 'i').exec(window.location.href);
Michał Niklas
źródło
2
Jakoś zrobię to w jeden ciąg?
Kardynał - Przywróć Monikę
11
@CardinalSystem/abc/i
aross
42

modyfikatory są podane jako drugi parametr:

new RegExp('[\\?&]' + name + '=([^&#]*)', "i")
Brad Mace
źródło
lubnew RegExp('^' + string + '$', "i")
Vadim,
6

Prosta jedna wkładka. W poniższym przykładzie zastępuje każdą samogłoskę znakiem X.

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

replaceWithRegex('HEllo there', /[aeiou]/gi, 'X'); //"HXllX thXrX"
Diego Fortes
źródło