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

247
Vistas
Cómo dividir una cadena mediante la coincidencia de expresiones regulares en JavaScript

Ya llevo más de una hora intentándolo y no encuentro la forma correcta de hacerlo. Tengo esta expresión regular:

 const search = /("Response)\s+\d+\s+(of)\s+\d+(":)\s+/g;

tengo esta cadena:

 {"Response 1 of 2": {"Name": "Jouny", "Class": "TR23", "Message Type": "Offer", "ID Identifier": "19256", "Address": "hjfhfgjhjhj"}, "Response 2 of 2": {"Name": "Sarah", "Class": "BHT56", "Message Type": "Alarm", "ID Identifier": "89756767", "Address": "oplkdhdggd"}}

Me gustaría tener un resultado como este:

 [ {"Name": "Jouny", "Class": "TR23", "Message Type": "Offer", "ID Identifier": "19256", "Address": "hjfhfgjhjhj"}, {"Name": "Sarah", "Class": "BHT56", "Message Type": "Alarm", "ID Identifier": "89756767", "Address": "oplkdhdggd"} ]

mi código:

 var lines = results.toString().split(/\n/); lines.forEach(function (item) { if (item.indexOf(myData) > 0) { var json = item.slice(item.indexOf(script) + script.length + 2).replace(PRINTABLE_CHAR, ''); var jsonMatch = json.split(json.match(search)); var result = jsonMatch.substr(0, jsonMatch.lastIndexOf('}')).replace(PRINTABLE_CHAR, ''); try { data = JSON.parse(result); } catch (e) { console.log('ERROR'); } } });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Puede lograr el mismo resultado usando Object.values

 const initialObject = {"Response 1 of 2": {"Name": "Jouny", "Class": "TR23", "Message Type": "Offer", "ID Identifier": "19256", "Address": "hjfhfgjhjhj"}, "Response 2 of 2": {"Name": "Sarah", "Class": "BHT56", "Message Type": "Alarm", "ID Identifier": "89756767", "Address": "oplkdhdggd"}} const resultObject = Object.values(initialObject); console.log(resultObject);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Este problema se puede resolver sin expresiones regulares. Puede analizar la primera cadena como JSON usando JSON. parse (cadena), luego puede obtener la lista de claves usando Object.keys (json) y luego hacer un forEach y empujarlo a una lista, lo que le dará lo que desea sin tener que lidiar con expresiones regulares. Voy a mostrar el código a continuación

 let string = '{"Response 1 of 2": {"Name": "Jouny", "Class": "TR23", "Message Type": "Offer", "ID Identifier": "19256", "Address": "hjfhfgjhjhj"}, "Response 2 of 2": {"Name": "Sarah", "Class": "BHT56", "Message Type": "Alarm", "ID Identifier": "89756767", "Address": "oplkdhdggd"}}' let list = [] //this will be the list that we will return at the end let data = JSON.parse(string) //parse the data into json Object.keys(data).forEach(key => list.push(data[key])) //get the keys and iterate through it return list //return the list

Esta debería ser una alternativa mucho mejor al uso de expresiones regulares. Regex no fue hecho para lo que estás tratando de hacer.

EDITAR: Ah, sigue el consejo de @callback. Usar object.values() sería una solución mucho mejor.

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