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

160
Views
RegExp capturando no-coincidencia

Tengo una expresión regular para un juego que debe coincidir con cadenas en forma de go [anything] o [cardinal direction] y capturar [anything] o [cardinal direction] . Por ejemplo, lo siguiente coincidiría:

go north go foo al north

Y lo siguiente no coincidiría:

foo go

Pude hacer esto usando dos expresiones regulares separadas: /^(?:go (.+))$/ para que coincida con el primer caso, y /^(north|east|south|west)$/ para que coincida con el segundo caso. Traté de combinar las expresiones regulares para ser /^(?:go (.+))|(north|east|south|west)$/ . La expresión regular coincide con todos mis casos de prueba correctamente, pero no captura correctamente para el segundo caso. Intenté conectar la expresión regular en RegExr y noté que, aunque el primer caso no se comparaba, todavía se capturaba.

¿Cómo puedo corregir esto?

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

0

Intente usar la función de mirar hacia atrás para encontrar la palabra "ir".

 (north|east|south|west|(?<=go ).+)$

Tenga en cuenta que esta solución le impide incluir ^ al comienzo de la expresión regular, porque el texto "ir" en realidad no está incluido en el grupo.

about 4 years ago · Juan Pablo Isaza Report

0

Debe mover el paréntesis de cierre al final del patrón para tener ambos patrones entre anclas, o de lo contrario permitiría una coincidencia antes de una de las direcciones cardinales y aún capturaría la dirección cardinal al final de la cadena.

Luego, en el JavaScript, puede verificar el valor del grupo 1 o el grupo 2.

 ^(?:go (.+)|(north|east|south|west))$ ^

Demostración de expresiones regulares

Usando una aserción de búsqueda posterior ( si es compatible ), también puede obtener una coincidencia solo en lugar de grupos de captura.

En ese caso, puede hacer coincidir el resto de la línea, afirmando go a la izquierda al comienzo de la cadena, o hacer coincidir solo 1 de los puntos cardinales:

 (?<=^go ).+|^(?:north|east|south|west)$

Demostración de expresiones regulares

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!