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

243
Views
¿Cómo uso RegEx para encontrar parens que contienen AMBOS números y letras, no solo uno u otro?

En este ejemplo...

 (5) (dogs) (5 dogs) (dogs 5)

Me gustaría coincidir solo con...

 (5 dogs) -or- (dogs 5)

Los números pueden ser cualquier cantidad de dígitos, contener comas, puntos decimales, operadores matemáticos, signos de dólar, etc. Lo único a lo que debo prestar atención es que hay números y caracteres alfabéticos presentes.

Comencé con esta modificación de un ejemplo proporcionado por hrs usando esto para RegEx...

 \(((letter).*(number))\)|((number).*(letter))\)

solo capturar esto...

 (number letter) -or- (letter number)

pero no...

 (number) (letter)

modificando la expresión para que sea...

 \(((^[a-zA-Z]).*(^[0-9]))\)|((^[0-9]).*(^[a-zA-Z]))\)

...pero obviamente no sé lo que estoy haciendo.

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

0

Puede usar la búsqueda anticipada para afirmar que hay un número y una letra dentro de cada conjunto de paréntesis:

 \((?=[^)\d]*\d)(?=[^)az]*[az])[^)]+\)

Las dos búsquedas anticipadas afirman que hay una cierta cantidad de caracteres de paréntesis que no son de cierre y luego un dígito (primera búsqueda anticipada (?=[^)\d]*\d) ) o una letra (segunda búsqueda anticipada (?=[^)az]*[az]) ). El [^)]+ luego coincide con los caracteres entre ( y ) .

Demostración en regex101

En Javascript:

 const str = '(5) (dogs) (5 dogs) (dogs 5)' const regex = /\((?=[^)\d]*\d)(?=[^)az]*[az])[^)]+\)/ig console.log(str.match(regex))

about 4 years ago · Juan Pablo Isaza Report

0

Como alternativa con una única anticipación:

 \((?=[^)az]*[az])[^\d)]*\d[^)]*\)

Explicación

  • \( Partido (
  • (?= anticipación positiva
    • [^)az]*[az] Coincide con cualquier carácter excepto ) o az, luego coincide con az
  • ) Cerrar la búsqueda anticipada
  • [^\d)]*\d Coincide con cualquier carácter excepto un dígito o ) y luego coincide con un dígito
  • [^)]* Coincide con cualquier carácter excepto )
  • \) Partido )

Demostración de expresiones regulares

 const s = '(5) (dogs) (5 dogs) (dogs 5)'; const regex = /\((?=[^)az]*[az])[^\d)]*\d[^)]*\)/ig; console.log(s.match(regex));

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!