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

255
Vistas
Validar texto con javascript RegEX

Estoy tratando de validar el texto con javascript, pero puedo averiguar por qué no funciona.

He estado usando: https://regex101.com/ para probar dónde funciona pero en mi script falla

 var check = "test" var pattern = new RegExp('^(?!\.)[a-zA-Z0-9._-]+$(?<!\.)','gmi'); if (!pattern.test(check)) validate_check = false;else validate_check = true;

Lo que estoy buscando es el primer y último carácter, no un punto, y la cadena puede contener [a-zA-Z0-9._-]

Pero la verificación anterior siempre falla incluso en la palabra: prueba

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

0

+$(?<!\.) no es válido en su RegEx

  1. $ coincidirá con el final del texto o la línea (con la bandera m )
  2. Negative lookbehind → (?<!Y)X coincidirá con X , pero solo si Y no está antes
about 4 years ago · Juan Pablo Isaza Denunciar

0

Algunas notas sobre el patrón:

  • Está utilizando el constructor RegExp, donde tiene que escapar dos veces de la barra invertida. En este caso, con una sola barra invertida, el patrón es ^(?!.)[a-zA-Z0-9._-]+$(?<!.) y la primera búsqueda negativa hará que el patrón falle si hay un carácter que no sea una nueva línea a la derecha, por eso no coincide con test
  • Si usa el indicador /i para una coincidencia que no distingue entre mayúsculas y minúsculas, puede acortar [A-Za-z] a solo uno de los rangos como [az] o usar \w para hacer coincidir un carácter de palabra como en su clase de carácter
  • Esta parte (?<!\.) que usa un lookbehind negativo no es inválida en su patrón, pero no siempre es compatible

Para sus requisitos, no tiene que usar miradas. Si también desea permitir un solo carácter, puede usar:

 ^[\w-]+(?:[\w.-]*[\w-])?$
  • ^ Comienzo de cadena
  • [\w-]+ Coincide con 1+ ocurrencias de un carácter de palabra o -
  • (?: grupo de no captura
    • [\w.-]*[\w-] Coincide con caracteres de palabra opcionales, un punto o guión
  • )? Cierre el grupo de no captura y hágalo opcional
  • $ Fin de la cadena

Demostración de expresiones regulares

 const regex = /^[\w-]+(?:[\w.-]*[\w-])?$/; ["test", "abc....abc", "a", ".test", "test."] .forEach((s) => console.log(`${s} --> ${regex.test(s)}`) );

about 4 years ago · Juan Pablo Isaza Denunciar

0

¿Qué pasa con RegEx más simple?

 var checks = ["test", "1-t.e_s.t0", ".test", "test.", ".test."]; checks.forEach(check => { var pattern = new RegExp('^[^.][a-zA-Z0-9\._-]+[^.]$','gmi'); console.log(check, pattern.test(check)) });

Su código debería verse así:

 var check = "test"; var pattern = new RegExp('^[^.][a-zA-Z0-9\._-]+[^.]$','gmi'); var validate_check = pattern.test(check); console.log(validate_check);

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