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

217
Vistas
¿Por qué esta expresión regular Unicode de búsqueda negativa no funciona en JavaScript cuando sí lo hace la coincidencia directa?

Estoy tratando de validar el nombre de archivo o las porciones de directorio de una cadena que eventualmente se usará en una URL y quiero rechazar los caracteres que no sean Unicode y otros, la expresión regular está devolviendo bytes nulos.

Dada esta cadena como entrada:

 զվարճ?անք9879#jhkjhkhl!kjljlkjlkjj()+======\_ew.html

/(?![\p{L}]|[\p{N}]|[\._-~])/gu

JavaScript devuelve coincidencias correctas de caracteres no válidos, pero selecciona un byte nulo para cada carácter coincidente y no el carácter completo.

Si ejecuto lo contrario y trato de hacer coincidir los caracteres que están bien en lugar de no estar bien:

/[\p{L}]|[\p{N}]|[\._-~]/gu

JavaScript devuelve coincidencias y selecciona cada carácter válido como se esperaba, sin coincidencias de bytes nulos.

Cada patrón tiene la bandera /u . No entiendo la diferencia de comportamiento. Probé esto en el último Chrome (actualización 100 a partir de la fecha de publicación), Safari y Firefox y todos se comportan de la misma manera.

¿Hay algún indicador u operador de que falta la primera expresión regular o se trata de un error/limitación de JavaScript?

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

0

No estás igualando, solo afirmando. Puede hacer coincidir un solo carácter justo después de la afirmación y agrupar la alternancia en una sola clase de carácter:

 (?![\p{L}\p{N}._-~]).

Demostración de expresiones regulares 101

O puede hacer coincidir 1 o más veces lo opuesto usando una clase de carácter negado que comience con [^

 [^\p{L}\p{N}._-~]+

Demostración de expresiones regulares 101

Tenga en cuenta que esta parte en la clase de caracteres _-~ denota un rango en lugar de caracteres _ - ~

Si desea hacer coincidir el carácter - , puede escaparlo o colocarlo al principio o al final de la clase de caracteres.

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