home | tutorial | asp | regexp für emails (auch mit umlautdomains)
ich will euch heute mal eine kleine funktion vorstellen mit der man festellen
kann ob es sich bei einer zeichenkette um eine email handelt.
wie auch in vielen anderen sprachen, bietet vbs das objekt regexp (regular expressions,
reguläre ausdrücke) an. das objekt regexp gibt es bereits seit vbs 5.0. seit
vbs 5.5 wurde das ganze nochmal stark erweitert und überarbeitet....
die emailcheck funktion ist gut geignet um email-formularfelder auf ihre gültige
syntax zu überprüfen.
<%
function emailcheck(byval strtext)
dim objreg
set objreg = new regexp
objreg.pattern = "^[a-zA-Z0-9]{1}[a-zA-Z0-9\._-]*@[a-zA-Z0-9_\.-]*[a-zA-Z0-9-]{2,}\.[a-z]{2,4}$"
emailcheck = objreg.test(strtext)
set objreg = nothing
end function
%>
abfragen könnt ihr das ganze dann mit
<%=emailcheck("meine@email.de")%>
wenn ihr ein formularfeld habt mit namen email. dann sieht die abfrage so aus:
<%=emailcheck(request.form("email"))%>
oder
<%=emailcheck(request.querystring("email"))%>
das liegt natürlich an der methode mit der das formular übertragen wurde (get
od. post).
der rückgabewert ist entweder true oder false.
kleines beispiel:
<%=emailcheck("meine@email.de")%>
rückgabewert = true
<%=emailcheck("irgendeinmist")%>
rückgabewert = false
jetzt also nochmal das ganze script in action:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
function emailcheck(byval strtext)
dim objreg
set objreg = new regexp
objreg.pattern = "^[a-zA-Z0-9]{1}[a-zA-Z0-9\._-]*@[a-zA-Z0-9_\.-]*[a-zA-Z0-9-]{2,}\.[a-z]{2,4}$"
emailcheck = objreg.test(strtext)
set objreg = nothing
end function
%>
<html>
<head>
<title>emailcheck</title>
</head>
<body>
<%
dim emailzeichenkette
dim emailsyntax
emailzeichenkette="test@email.de" 'hier könnte jetzt auch der request.querystring
od. request.form stehen
emailsyntax=emailcheck(emailzeichenkette)
response.write(emailzeichenkette&" ist ")
if emailsyntax=false then response.write("k")
response.write("eine gültige email")
%>
</body>
</html>
ausschlaggeben ist das muster(pattern) um die zeichenkette zu filtern. in diesem
script wurde folgendes muster verwendet:
"^[a-zA-Z0-9]{1}[a-zA-Z0-9\._-]*@[a-zA-Z0-9_\.-]*[a-zA-Z0-9-]{2,}\.[a-z]{2,4}$"
das muster sagt fogendes aus. das erste zeichen der email darf nur aus klein/großbuchstaben
von a-z und zahlen bestehen. es sind keine umlaute, sonderzeichen usw... erlaubt.
die restlichen zeichen bis zum @, können aus klein/großbuchstaben von a-z, zahlen,
punkt (.), unterstrich (_) und bindestrich (-) bestehen. es muß midestens ein
zeichen vor dem @ stehen. nach dem @ zeichen gilt das gleiche wie vor dem @ zeichen.
der domainname muß mindestens 2 zeichen lang sein und darf nur aus buchstaben,zahlen
und bindestrich bestehen. zum schluß kommt noch der/das länder/organisationskürzel
der domain. diese darf natürlich nur aus buchstaben bestehen und darf nur 2-4
zeichen lang sein.
ich hoffe das hilft euch ein wenig weiter..
//update 12.02.2004
wie vielleicht schon einige bemerkt haben gibt es ab dem 01.03.2004 die neuen
umlaut-domains. der regexp-pattern muß dafür natürlich angepasst werden.
hier der link zum regexp pattern...








