var userName = input.question('Please enter your name: '); //Asking User to enter their Name. while (userName.includes('.')) { console.log ("Invalid Name!"); var userName = input.question('Please enter your name: '); //Asking User to enter their Name. }
El código anterior le preguntará al usuario su nombre y lo almacenará en "nombre de usuario". Luego validará usando .includes para verificar caracteres y números no deseados.
Quiero validar si el nombre de usuario tiene números o caracteres no deseados como "?/.,;'[]{}|&^%@", etc. He intentado usar .includes y validar si un nombre tiene "." Sin embargo, no estoy seguro de cómo proceder desde allí para validar el resto.
Después de que while verifique que contiene los caracteres no deseados, volverá a solicitar al usuario que ingrese un nuevo nombre y volverá a verificar hasta que devuelva falso.
¿Hay una solución para esto?
Puede usar REGEX para buscar caracteres no alfabéticos o espacios en la cadena:
userName.search(/^[a-zA-Z\s]+$/)
La respuesta será 0
o -1
. 0
significa que no se encontraron caracteres excepto AZ
, az
y space
, -1
significa lo contrario.
Editar: encontré una pregunta similar con respuestas más detalladas aquí .
let chars = /[$&+,:;=?@#|'<>.^*()%!-]/g; chars.test(UserName)
Utilice expresiones regulares ( Regex ) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions