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

151
Vistas
Javascript regex para hacer coincidir caracteres válidos sin repetir un carácter en particular
let rx = /(\/MxML\/[a-z0-9\[\]@/]*)/gi; let s = 'If (/MxML/trades[1]/value== 1 then /MxML/trades[type=2]/value must be /MxML/stream/pre/reference@href'; let m; let res = []; while ((m = rx.exec(s))) { res.push(m[1]); } console.log(res);
  1. El patrón debe comenzar con /MxML/
  2. Sigue incluyendo caracteres aceptables [a-z0-9[]@/]
  3. Un solo = está bien. Pero == o === no están bien.

Salida deseada

 [ '/MxML/trades[1]/value', '/MxML/trades[type=2]/value', '/MxML/stream/pre/reference@href', ];

Mi salida actual (incorrecta)

 [ '/MxML/trades[1]/value', '/MxML/trades[type', '/MxML/stream/pre/reference@href', ];

Puedo pensar en un vistazo, pero no puedo entender cómo usarlo aquí. (?<!\=)\=(?!\=)

He estado revisando varios otros ejemplos en Stackoverflow, pero se trata de evitar la repetición de todos los caracteres y no de evitar la repetición de un carácter particular (=) junto con otros caracteres válidos.

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

0

Aquí hay una expresión regular que debería ser compatible en todos los navegadores:

 /(\/MxML\/(?:[a-z0-9\[\]@/]|=(?!=))*)/gi
  • /(\/MxML\/ - su expresión regular
  • (?: - iniciar un grupo sin captura; necesitamos esto para implementar un operador "o" y no estropear el uso de m[1]
    • [a-z0-9\[\]@/] - su expresión regular de caracteres incluidos en la lista blanca; observe que se eliminó el asterisco
    • | - o
    • =(?!=) - permite un signo igual no seguido por un signo igual
  • )* - cierra el grupo que no captura y captura entre cero e infinitos casos de lo que hay dentro
  • )/gi - tu expresión regular

 let rx = /(\/MxML\/(?:[a-z0-9\[\]@/]|=(?!=))*)/gi; let s = 'If (/MxML/trades[1]/value== 1 then /MxML/trades[type=2]/value must be /MxML/stream/pre/reference@href'; let m; let res = []; while ((m = rx.exec(s))) { res.push(m[1]); } console.log(res);

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