3

Estoy preparando una expresión regular:

[a-zA-Z0-9._-]{20}

Hasta el momento estoy con la parte previa del "@" de un email y estoy tratando de hacer algo como esto:

[a-zA-Z0-9._-]{"*"-20}

Donde aparece "*" trato de poner que no tenga un tamaño mínimo, pero sí un máximo

¿Como podría montar la expresión?

La idea es usarlo luego para hacer esto:
Correo electrónico en formato varios caracteres (letras, números, puntos o guiones altos o bajos, 20 máximo) seguido de arroba, letras (20 máximo), punto (1), y 2 o 3 letras.

Mariano
  • 23,777
  • 20
  • 70
  • 102
UnexpectedCharacter
  • 1,841
  • 7
  • 31
  • 56

1 Answers1

7

La solución es usar {n,m} (cuantificador de rango), donde n es el mínimo de ocurrencias posibles y m el máximo.

Ejemplo:

var re = /^[a-zA-Z0-9]{0,20}$/;

console.log(re.test('')); // 0 chars
console.log(re.test('1')); // 1 chars
console.log(re.test('12345678901234567890'));// 20 chars
console.log(re.test('123456789012345678901'));// 21 chars
Marcos
  • 30,626
  • 6
  • 28
  • 63