No tengo experiencia con expresiones regulares, encontré esto en el código y estoy tratando de entenderlo. Esta es expresión regular: (/[az\d]+=[az\d]+/gi);
Y el contexto en el que se usa es el siguiente:
const queryString = window.location.search; let matches = queryString.match(/[az\d]+=[az\d]+/gi); let count = matches ? matches.length : 0;
Además, estoy interesado, ¿es posible escribir de una manera diferente, sin usar expresiones regulares?
Está comprobando cuántas cadenas de consulta hay en la url.
/[az\d]+=[az\d]
dice que cualquier letra o dígito entre un =
y otra letra o dígito debe coincidir.
La parte gi
significa que es globalmente insensible a mayúsculas y minúsculas.
g
= global, coincide con todas las instancias del patrón en una cadena, no solo con unai
= no distingue entre mayúsculas y minúsculas (así, por ejemplo, /a/i coincidirá con la cadena "a" o "A". const urlQueryString = 'https://test.com/page?name=ferret&color=purple' let matches = urlQueryString.match(/[az\d]+=[az\d]+/gi); let count = matches ? matches.length : 0; console.log(count) // --> 2 name=ferret color=purple
Hay una herramienta disponible aquí que le permite probar la expresión regular.
Este código contará la cantidad de parámetros de consulta presentes en la cadena. Sin embargo, puede usar la clase URLSearchParams
para contar entradas en cadenas de consulta.
// URL: https://example.com/?query1=value&query2=value const searchParams = new URLSearchParams(window.location.search); // This row will map iterator into array // [ ['query1', 'value'], ['query2', 'value'] ] const entriesArray = [...searchParams.entries()]; // 2 console.log(entriesArray.length);