Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

88
Vistas
¿Por qué esta expresión regular de javascript devuelve nulo?

Necesito extraer una cadena JSON que se encuentra dentro de una cadena más grande (lo sé, mala respuesta de API con la que tengo que lidiar). De todos modos, construí una sola expresión regular para leer todo dentro de {} y funciona en todos los casos probados, excepto por la respuesta API real en el fragmento a continuación.

¿Alguna idea de por qué no funciona y cómo hacer que funcione?

 let dd = 'Error: Internal JSON-RPC error.\n{\n "code": 3,\n "message": "execution reverted: This limited season is sold out. Please wait for the next season.",\n "data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004154686973206c696d6974656420736561736f6e20697320736f6c64206f75742e20506c65617365207761697420666f7220746865206e65787420736561736f6e2e00000000000000000000000000000000000000000000000000000000000000"\n}'; alert(RegExp(/{.*}/).exec(dd))

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El contenido no coincide entre varias líneas, por lo que puede usar el modificador /s para incluir nuevas líneas. Tampoco se necesita Regexp() cuando se usa la sintaxis de expresiones regulares ( /{.*}/s es lo mismo que Regexp('{.*}','s') ):

 alert(/{.*}/s.exec(dd)) 

 let dd = 'Error: Internal JSON-RPC error.\n{\n "code": 3,\n "message": "execution reverted: This limited season is sold out. Please wait for the next season.",\n "data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004154686973206c696d6974656420736561736f6e20697320736f6c64206f75742e20506c65617365207761697420666f7220746865206e65787420736561736f6e2e00000000000000000000000000000000000000000000000000000000000000"\n}'; alert(/{.*}/s.exec(dd))

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe agregar un indicador s como segundo argumento a su constructor RegExp :

s - ("dotAll") Permite . para hacer coincidir las nuevas líneas.

 let dd = 'Error: Internal JSON-RPC error.\n{\n "code": 3,\n "message": "execution reverted: This limited season is sold out. Please wait for the next season.",\n "data": "0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004154686973206c696d6974656420736561736f6e20697320736f6c64206f75742e20506c65617365207761697420666f7220746865206e65787420736561736f6e2e00000000000000000000000000000000000000000000000000000000000000"\n}'; alert(RegExp('{.*}', 's').exec(dd))

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp

about 4 years ago · Juan Pablo Isaza Denunciar

0

Con otro enfoque, usar .match() en realidad devolverá la coincidencia con la cadena que desea extraer, que está dentro de {llaves} . con dos banderas s para habilitar la búsqueda de nuevas líneas y g para buscar globalmente

 dd.match(/\{(.*)?\}/sg)[0]

Resultado {\n "code": 3,\n "message": "execution reverted: T…0000000000000000000000000000000000000000000000"\n}

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda