No distingue entre mayúsculas y minúsculas
Tengo lo siguiente:
if (referrer.indexOf("Ral") == -1) { ... }
Lo que me gusta hacer es no distinguir Ral
entre mayúsculas y minúsculas, para que pueda ser RAl
, rAl
, etc. y aún así coincidir.
¿Hay alguna manera de decir que Ral
no se distinguen entre mayúsculas y minúsculas?
Añadir .toUpperCase()
después referrer
. Este método convierte la cadena en una cadena en mayúsculas. Luego, use .indexOf()
en RAL
lugar de Ral
.
if (referrer.toUpperCase().indexOf("RAL") === -1) {
Lo mismo también se puede lograr usando una expresión regular (especialmente útil cuando desea realizar pruebas con patrones dinámicos):
if (!/Ral/i.test(referrer)) {
// ^i = Ignore case flag for RegExp
Otra opción es utilizar el método de búsqueda de la siguiente manera:
if (referrer.search(new RegExp("Ral", "i")) == -1) { ...
Parece más elegante que convertir toda la cadena a minúsculas y puede ser más eficiente.
Con toLowerCase()
el código haga dos pasadas sobre la cadena, una pasada es por toda la cadena para convertirla a minúsculas y otra es para buscar el índice deseado.
Con RegExp
el código, pase una vez sobre la cadena que parece coincidir con el índice deseado.
Por lo tanto, en cadenas largas recomiendo usar la RegExp
versión (aunque supongo que en cadenas cortas esta eficiencia se debe a la creación del RegExp
objeto)
Desde ES2016 también puede utilizar un método ligeramente mejor/más fácil/más elegante (distingue entre mayúsculas y minúsculas):
if (referrer.includes("Ral")) { ... }
o (no distingue entre mayúsculas y minúsculas):
if (referrer.toLowerCase().includes(someString.toLowerCase())) { ... }
Aquí hay una comparación de .indexOf()
y .includes()
:
https://dev.to/adroitcoder/includes-vs-indexof-in-javascript
Utilice una expresión regular:
if (!/ral/i.test(referrer)) {
...
}
O usar .toLowerCase()
:
if (referrer.toLowerCase().indexOf("ral") == -1)