Soy muy nuevo en expresiones regulares y quiero extraer algunos datos de las respuestas de la API.
Tengo una respuesta de mi llamada a la API:
{ server: 'nginx/1.21.0', date: 'Mon, 25 Apr 2022 11:34:20 GMT', 'content-type': 'text/html; charset=UTF-8', 'transfer-encoding': 'chunked', 'x-powered-by': 'PHP/7.4.16', expires: 'Sun, 19 Nov 1978 05:00:00 GMT', 'cache-control': 'no-store, no-cache, must-revalidate, max-stale=0, private, post-check=0, pre-check=0', 'x-content-type-options': 'nosniff', 'content-security-policy': "frame-ancestors 'self';", 'set-cookie': [ 'SSESS8b04132f4690dc8ceb7837d5134a5519=ZbgVsmpp6DBRWwNCRMm5DTpfEoKffsNM7l8ILoCWkug; path=/; domain=test.net; secure; HttpOnly', 'su=1; expires=Thu, 22-Apr-2032 11:34:20 GMT; Max-Age=315360000; path=/; domain=test.net', 'lt=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0; path=/; test.net', 'dtCookie=v_4_srv_10_sn_6364C36040ADFF47B91A838BB8B2CADD_perc_100000_ol_0_mul_1_app-3Aea7c4b59f27d43eb_1; Path=/; Domain=test.net', '870be6fb89fc78ad2ca0eca3828e3019=7055c78f3c2b7311a5c77934caad6939; path=/; HttpOnly; Secure; SameSite=None' ], 'x-oneagent-js-injection': 'true', 'x-ruxit-js-agent': 'true', 'server-timing': 'dtSInfo;desc="0", dtRpid;desc="493206686"', connection: 'close' }Quiero extraer SSESS8b04132f4690dc8ceb7837d5134a5519 y ZbgVsmpp6DBRWwNCRMm5DTpfEoKffsNM7l8ILoCWkug , que son variables, y cada ejecución individual tiene valores diferentes.
Me las arreglé para construir un grupo que captura toda la clave/valor, pero aún cuando trato de consolarlo, no funciona.
https://regex101.com/r/2dKW4s/1
prueba 1 como:
var matches1 = loginModern.headers.match(new RegExp("(SSESS.*)=(.+?);\s*path")); console.log(matches1[2]); result output: TypeError: loginModern.headers.match is not a functionprueba 2:
const regex1 = new RegExp('(SSESS.*)=(.+?);\s*path'); var matches1 = regex1.exec(loginModern.headers) console.log(matches1); null ¿Cómo obtener SSESS8b04132f4690dc8ceb7837d5134a5519 y ZbgVsmpp6DBRWwNCRMm5DTpfEoKffsNM7l8ILoCWkug de la respuesta anterior, teniendo en cuenta que están cambiando las variables?
Cualquier ayuda es apreciada
Caja de arena: https://codesandbox.io/s/jwdgmp
const setCookieArray = loginModern.headers["set-cookie"]; const stringContainingSSESS = setCookieArray.find((item) => item.includes("SSESS") ); const matches = stringContainingSSESS.match(/(SSESS[a-zA-Z0-9]*)=(.+?);/); console.log("key", matches[1]); console.log("value", matches[2]); Ejecuté la expresión regular que proporcionó contra loginModern.headers y tuvo algunos problemas de coincidencia. Esta expresión regular es más precisa