Ich habe die folgende Abfrage mit vielen verschiedenen falschen und gültigen E-Mail-Adressen getestet. Es sollte den Job machen.
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'
Es prüft diese Bedingungen:
- Keine eingebetteten Leerzeichen
- '@' darf nicht das erste Zeichen einer E-Mail-Adresse sein
- '.' darf nicht das letzte Zeichen einer E-Mail-Adresse sein
- Es muss ein '.' irgendwo nach '@'
- das '@'-Zeichen ist erlaubt
- Domainname sollte mit einer mindestens 2-stelligen Erweiterung enden
- darf keine Muster wie '[email protected]' und '..' haben