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

214
Vistas
JS Regex - cotizaciones opcionales sin captura

Luchando por obtener una expresión regular que funcione que no capture comillas que son opcionales.

Código y jsfiddle a continuación.

https://jsfiddle.net/zx7Lurob/1/

 var txt = `#VER B 2000 20190403 "Text" 20190413`; //without quote 2000 var txt2 = `#VER B "2000" 20190403 "Text" 20190413`; //with qutoe 2000 var myRegexp = /(#VER)\s+"(.+)"|(.+)\s+(.+?)\s+(\d{8})\s+"(.+)"/g; do { var match = myRegexp.exec(txt2); if (match != null) { match.forEach(function(value) { console.log(value); }); //console.log(match); } } while (match != null);

Da un resultado con valores citados para txt2.

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

0

Puedes usar

 var myRegexp = /(#VER.*?)\s+(?:"([^"]*)"|(\S+))\s+(\d{8})\s+"([^"]*)"/g;

Vea la demostración de expresiones regulares . Detalles :

  • (#VER.*?) - Grupo 1: #VER y luego cero o más caracteres, que no sean caracteres de salto de línea, la menor cantidad posible
  • \s+ - uno o más espacios en blanco
  • (?:"([^"]*)"|(\S+)) - ya sea " , luego cero o más caracteres que no sean " (capturados en el Grupo 2), o uno o más caracteres que no sean espacios en blanco (capturados en el Grupo 3),
  • \s+ - uno o más espacios en blanco
  • (\d{8}) - Grupo 4: ocho dígitos
  • \s+ - uno o más espacios en blanco
  • "([^"]*)" - " , luego cualquier cero o más caracteres que no sean " (capturados en el Grupo 5), y luego un " carácter.

Vea la demostración de JavaScript:

 var txt = `#VER B 2000 20190403 "Text" 20190413`; var txt2 = `#VER B "2000" 20190403 "Text" 20190413`; var myRegexp = /(#VER.*?)\s+(?:"([^"]*)"|(\S+))\s+(\d{8})\s+"([^"]*)"/g; for (var txt of [txt, txt2]) { do { var match = myRegexp.exec(txt); if (match != null) { console.log(txt, '=>', [match[1], match[3] || match[2], match[4], match[5]]); } } while (match != null); }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Es difícil determinar si los puntos de paso posicionales están destinados o
un delimitador de campo.
Supongo que es en realidad un híbrido de ambos.

En ese caso, una simple coincidencia de una cotización opcional en ambos lados de un
campo y fuera de la captura debería hacer el truco.

 /(\#VER.*)[ \t]+"?(.+?)"?[ \t]+(\d{8})[ \t]+"(.+)"/

https://jsfiddle.net/Lj4rzo2s/

 ( \#VER .* ) # (1) [ \t]+ "? ( .+? ) # (2) "? [ \t]+ ( \d{8} ) # (3) [ \t]+ " ( .+ ) # (4) "
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