Probé la siguiente consulta con muchas direcciones de correo electrónico incorrectas y válidas diferentes. Debería hacer el trabajo.
IF (
CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0
AND LEFT(LTRIM(@email_address),1) <> '@'
AND RIGHT(RTRIM(@email_address),1) <> '.'
AND CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address ) > 1
AND LEN(LTRIM(RTRIM(@email_address ))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1
AND CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3
AND (CHARINDEX('[email protected]',@email_address ) = 0 AND CHARINDEX('..',@email_address ) = 0)
)
print 'valid email address'
ELSE
print 'not valid'
Comprueba estas condiciones:
- Sin espacios incrustados
- '@' no puede ser el primer carácter de una dirección de correo electrónico
- '.' no puede ser el último carácter de una dirección de correo electrónico
- Debe haber un '.' en algún lugar después de '@'
- se permite el signo '@'
- El nombre del dominio debe terminar con una extensión de al menos 2 caracteres
- no puede tener patrones como '[email protected]' y '..'