Estoy tratando de eliminar la verificación de correo electrónico predeterminada y agregar mi propia verificación de correo electrónico a un formulario de registro en ReactJS. Inicialmente, me gustaría verificar que la dirección de correo electrónico ingresada contenga @. Para esto, armé el siguiente código, sin embargo, no funciona.
if (!form.email.value.includes('@')) { setWarning({ show: true, message: 'Please provide a valid email address.' }) setTimeout(() => { setWarning({ show: false, message: '' }) }, 3000) return }En el futuro, también me gustaría usar regEx para validar la contraseña, ya que actualmente solo estoy validando la cantidad de caracteres, pero aún no he aprendido cómo hacerlo en ReactJS. Me gustaría que mi contraseña tenga al menos 1 letra mayúscula, 1 letra minúscula, 1 número y ningún tipo de símbolo. Actualmente, mi código se ve así:
if (form.password.length < 6) { setWarning({ show: true, message: 'The password must be at least 6 characters long.' }) setTimeout(() => { setWarning({ show: false, message: '' }) }, 3000) return }Bueno, antes que nada, puedo aconsejarle que publique en este Stack Overflow en inglés. Si quieres, puedes dirigirte a "Stack Overflow em Português" ( https://pt.stackoverflow.com/ ) donde la comunidad es portuguesa :)
Con respecto a su primera pregunta, realmente no debería verificar el correo electrónico usando "ifs". Bueno, mirando su código, si, digamos, alguien ingresa "um_email@extra@mail.pt", se permitirá. Le sugiero encarecidamente que use expresiones regulares para ello. Para asegurarme de que está utilizando la variable correcta, agregué un registro de consola. Su código sería algo como esto:
console.log(form.email.value); let emailReg = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w\w+)+$/; if (emailReg.test(form.email.value) === false) { setWarning({ show: true, message: 'Informe um e-mail válido.' }) setTimeout(() => { setWarning({ show: false, message: '' }) }, 3000) return }En su segunda pregunta, bueno, Stack Overflow no es del tipo "Necesito esto, ¿alguien puede hacerlo por mí?". Primero debe mirar a su alrededor y probar las cosas por sí mismo, probando diferentes expresiones regulares y cómo funcionan. Pero sí, con respecto a que eres un nuevo colaborador, intentaré ayudarte con esto.
// (?=.{6,}) - at least 6 characters or more // (?=.*\d) - at least 1 decimal // (?=.*[az]) - at least 1 lower case // (?=.*[AZ]) - at least 1 upper case // (?!.*\W) - no special character let passwordReg = /^(?=.{6,})(?=.*\d)(?=.*[az])(?=.*[AZ])(?!.*\W).*$/; if (passwordReg.test(form.password) === false) { setWarning({ show: true, message: 'A senha não é válida.' }) setTimeout(() => { setWarning({ show: false, message: '' }) }, 3000) return }Espero poder ayudarte. :)
Ps.: Si esto responde a su pregunta, márquelo como correcto :)