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

251
Views
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 answers
Answer question

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 Report

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 Report

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