autor

Milan Kapetanov
Developer . Design . Management
| skills

balkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalkenbalken

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...

impressum | tutorial | login | zugriffe 2231