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

242
Vistas
¿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 Respuestas
Responde la pregunta

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 Denunciar

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 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