Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

89
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!