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

128
Views
¿Cómo puedo dividir una cadena a través de corchetes de primer nivel?

Tengo una cadena como esta:

 key[type=order][0].item[id={getVal(obj[type=item][0].id)}]

y quiero dividir esta cadena como:

 [ ['key', '[type=order]', '[0]'], ['item', '[id={getVal(obj[type=item][0].id)}]'] ]

En primer lugar, dividí la cadena a través del punto de primer nivel:

 const str = 'key[type=order][0].item[id={getVal(obj[type=item][0].id)}]'; const arr = str.split(/\.(?![^[]*])/).filter(Boolean);

Esta matriz generada como esta:

 ['key[type=order][0]', 'item[id={getVal(obj[type=item][0].id)}]']

Y después de eso, quiero dividir todos los elementos de la matriz a través del corchete de primer nivel con:

 arr.map(item => item.split(/(\[.+?\])/).filter(Boolean))

Esta matriz generada:

 [ ['key', '[type=order]', '[0]'], ['item', '[id={getVal(obj[type=item]', '[0]', '.id)}]'] ]

Quiero dividir elementos solo corchetes de primer nivel no anidados. ¿Cómo puedo hacer esto con expresiones regulares en javascript?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

esto debería hacerlo en tu división final

 arr.map(item => item.split(/(\[[^\]]+\(.*\).*\])|(\[.+?\])/).filter(Boolean))

Lo que genera la matriz:

 [ ['key', '[type=order]', '[0]'], ['item', '[id={getVal(obj[type=item][0].id)}]'] ]

La expresión regular es /(\[[^\]]+\(.*\).*\])|(\[.+?\])/ y la primera parte busca corchetes con paréntesis dentro, y descuenta los corchetes dentro de esos. Después de la | (o) ¡se ejecuta su expresión regular original!

Actualizar

 arr.map(item => item.split(/(\[[^\]]+\([^\)]*\)[^\]]*\])|(\[.+?\])/).filter(Boolean))
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!