Necesito algunas reglas de validación de correo electrónico para mostrar algunos mensajes personalizados.
@ seguido de un . Lo que he probado hasta ahora: yup.string().email().matches(/^(?!\@*.)/)
@ seguido de , Lo que he probado hasta ahora: yup.string().email().matches(/^(?!\@*,)/)
Ninguna de las soluciones que probé funcionó.
Una forma es escribir diferentes patrones para generar diferentes mensajes personalizados.
Por ejemplo, este patrón coincide con una coma después de @
^[^@\s]+@[^@\s,]*,Explicación
^ Comienzo de cadena[^@\s]+ Coincidencia de 1+ caracteres que no sean un carácter de espacio en blanco o @@ Partido literalmente[^@\s,]*, haga coincidir los caracteres opcionales que no sean un carácter de espacio en blanco o @, luego haga coincidir la comaEste patrón coincide con un formato de correo electrónico. También puede coincidir con una coma, pero ya se está comprobando ese patrón específico.
^[^\s@]+@[^\s@]+\.[^\s@]+$ const getMessage = s => { if (s.startsWith("@")) { return `${s} -->Invalid, string starts with @`; } if (/^[^@\s]+$/.test(s)) { return `${s} --> Invalid, string does not contain @`; } if (/^[^@\s]+@[^@\s,]*,/.test(s)) { return `${s} --> Invalid, string has , after @`; } if (/^[^@\s]+@[^@\s.]+$/.test(s)) { return `${s} --> Invalid, string has no . after @`; } if (/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(s)) { return `${s} --> Valid format`; } return `${s} --> Invalid format`; }; [ "@test.com", "abc@gmailcom", "def.com", "abc@gmail,com", "test@test.com", "test@@" ].forEach(s => console.log(getMessage(s)));Puedes usar
yup.string().email().matches(/@[^.]*\./)y
yup.string().email().matches(/^(?!.*@[^,]*,)/)Estas dos expresiones regulares coinciden
@[^.]*\. - un carácter @ , luego cero o más caracteres que no sean . y luego un . char (es decir, debe haber un @ en algún lugar y luego debe haber un . a la derecha del @ char encontrado)^(?!.*@[^,]*,) - comienzo de la cadena ( ^ ), y luego una búsqueda anticipada negativa ( (?!...) ) que falla la coincidencia si, inmediatamente a la derecha de la ubicación actual , hay cero o más caracteres que no sean caracteres de salto de línea tantos como sea posible ( .* ), luego una @ , luego cero o más caracteres sin coma ( [^,]* ) y luego una coma. Entonces, básicamente, haga coincidir una cadena que no contenga una @ seguida de una coma.