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

107
Views
Asegúrese de que todas las líneas en un archivo coincidan con un patrón RegEx conocido, sin depender de \A \z

En un archivo de varias líneas, quiero verificar que todas las líneas coincidan con uno o más patrones complejos (que pueden cubrir varias líneas cada uno).

Puedo hacer que esto funcione bien con este RegEx

 \A(patternA\n|patternB\n)*\z

(Para algunos idiomas funciona con \Z en lugar de \z )

Coincidirá:

 patternA patternB patternA

y rechazará

 patternA patternC patternB

Pero no funciona en JavaScript (donde necesito ejecutar la prueba) porque JavaScript RegEx aparentemente no admite los anclajes \A (inicio de archivo) o \z (fin de archivo). Y si esos anclajes se dejan, obtengo un conjunto de coincidencias (la primera y la tercera línea en mi segundo ejemplo anterior), sin la información de que también hay no coincidencias.

Por el momento, lo único que se me ocurre es ejecutar la verificación RegEx sin esos dos anclajes y luego verificar que la suma de la longitud de todas las coincidencias sea igual a la longitud del texto general, pero esto parece bastante torpe.

¿Existe una forma simple/elegante de implementar esta verificación en JavaScript RegEx?

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

0

Ahora creo que la mejor solución puede ser invertir la lógica para que busque cualquier cosa que no coincida con los patrones requeridos y pase la verificación si no se encuentra ninguna coincidencia. El siguiente RegEx, que se ejecuta bajo JavaScript, por ejemplo, coincide con el segundo ejemplo de mi publicación original y no con el primero:

 ^(?!patternA$|patternB$|$)

Se necesita la última opción ( $ ) ya que, de lo contrario, siempre coincide con la línea (vacía) que sigue a la última nueva línea.

about 4 years ago · Juan Pablo Isaza Report

0

Si los patrones individuales son complejos, puede ser más fácil para el motor de expresiones regulares y más simple de entender escribir código imperativo que recorra cada una de las líneas y verifique cada uno de los patrones en orden.

Esto permitirá que cada uno de los patrones permanezca en una expresión regular. No es necesario incluirlos en el patrón de "archivo completo" cuando se actualiza, agrega o elimina uno. Los diferentes patrones también pueden usar diferentes banderas de expresiones regulares y así sucesivamente.

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!