Tengo una cookie (_gaexp), de la que quiero extraer valores:
GAX1.3.yK3HnOfSRZCVUMNkK3tVCA.18961.ss12!QV1ffpISQcCGmM4IOTuUlQ.18961.0!F9l4roGRR5K03cSaZMWQiA.18961.1
Específicamente, quiero extraer los caracteres, solo antes de 18961 , lo cual puedo hacer.
Pero no quiero que se incluya GAX1.3 en mi resultado.
Por ejemplo, tengo el siguiente código:
let read = readCookie("_gaexp").split("!"); read.forEach(function(key, index) { splitBeginningOfCookie = read[0].split('.') optimizeID = splitBeginningOfCookie[3]; let variantID = key.split(optimizeID+".")[1]; let id = key.split("."+optimizeID)[0]; console.log("variantID", variantID); console.log("id", id); });Qué consola.registros:
variantID ss12 id GAX1.3.yK3HnOfSRZCVUMNkK3tVCA variantID 0 id QV1ffpISQcCGmM4IOTuUlQ 8 variantID 1 id F9l4roGRR5K03cSaZMWQiA Quiero excluir GA1.3. aunque desde el primer bucle. ¿Cuál es la mejor manera de obtener solo los ID largos de esta cadena?
Los últimos 2 bucles están bien. Es solo el primero, que devuelve todo antes 18961 .
Gracias,
En lugar de usar split() , podría usar una expresión regular para tomar las dos secciones alrededor .18961. . En este escenario, podría usar la expresión regular:
([^.]+)\.18961\.([^.]+) const cookie = "GAX1.3.yK3HnOfSRZCVUMNkK3tVCA.18961.ss12!QV1ffpISQcCGmM4IOTuUlQ.18961.0!F9l4roGRR5K03cSaZMWQiA.18961.1"; const regex = /([^.]+)\.18961\.([^.]+)/; const read = cookie.split("!"); read.forEach((part, index) => { const [_, id, variantID] = part.match(regex); console.log("variantID", variantID); console.log("id", id); });Prueba esto.
var v = 'GAX1.3.yK3HnOfSRZCVUMNkK3tVCA'; var result = v.replace('GA','').replace('1.3.',''); console.log(result);Tal vez con la ayuda de RegExp:
const data = "GAX1.3.yK3HnOfSRZCVUMNkK3tVCA.18961.ss12!QV1ffpISQcCGmM4IOTuUlQ.18961.0!F9l4roGRR5K03cSaZMWQiA.18961.1"; const reg = /([^.!]+)\.18961\.([^!]+)/g; const result = {}; let d; while((d = reg.exec(data))) result[d[1]] = d[2]; console.log(result); O usando matchAll()
const data = "GAX1.3.yK3HnOfSRZCVUMNkK3tVCA.18961.ss12!QV1ffpISQcCGmM4IOTuUlQ.18961.0!F9l4roGRR5K03cSaZMWQiA.18961.1"; const reg = /([^.!]+)\.18961\.([^!]+)/g; const result = [...data.matchAll(reg)].reduce((r,a)=>{return r[a[1]]=a[2],r},{}); console.log(result);