In einem vorigen Artikel habe ich bereits über die Syntax Elemente von Regular Expressions geschrieben. Nachdem ich mich jetzt einige Tage mit ASP+ porgrammierung und den dortigen Validators beschäftigt habe, möchte ich erklären wie mit Java Script am Client komfortabel eine Validierung vorgenommen werden kann. Eines der größten Problem ist immer wie verhindere ich Fake eMail Adressen?
Nun dafür kann man sowohl am Server als auch am Client nette Scripts schreibn. Aber mit Regular Expressions gehts einfacher!
Zunächst die wichtigsten Funktionen. Die Erklärung dazu kann ein ganzes Buch füllen und deshalb verzichte ich an dieser Stelle darauf.
Um eine Objekt zu erstellen verwenden RegExp
RegExp
var reg = new RegExp("Hannes");
compile
regexp.compile("PATTERN", ["g"|"i"|"gi"])
exec
regexp.exec(str)
test
regexp.test(str)
match
str.match(regexp)
replace
str.replace(regexp, replaceStr)
split
str.split(regexp)
search
str.search(regexp)
Nun aber zur Tat. Zunächst wir ein INPUT ausgelesen und einer Variable zugewiesen. Der Ausdruck zum vergleichen wird per Test() gegen die email Adresse geprüft.
var reg = new RegExp("[w-]+[w-]*)+@([w]+.)+[w-]+"); if (reg.test(str)) else alert("ungültige eMail Adresse"); |
Das Script wird nicht in allen Browsern fehlerfrei laufen. Mit etwas Mühe und Fehlerbehandlung lässt sich aber ein universelles aber kompliziertes Script erstellen, das jeder Browser fressen sollte.
<SCRIPT LANGUAGE="JavaScript"> <!-- function CheckForm(form) { var email = form.email; var str = email.value; if (window.RegExp) { var strReg1 = "(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)"; var strReg2 = "^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$"; var reg1 = new RegExp(strReg1); var reg2 = new RegExp(strReg2); if (!reg1.test(str) && reg2.test(str)) return true; email.focus(); email.select(); return false; } else { if(str.indexOf("@") >= 0) return true; email.focus(); email.select(); return false; } } // --> </SCRIPT> <FORM METHOD="POST" ACTION="mailto:test@yourdomain.de" ENCTYPE="text/plain" onSubmit="return CheckForm(this)"> e-mail:<BR><INPUT TYPE="text" NAME="email" SIZE="40"><BR> <INPUT TYPE="submit" VALUE="senden"> </FORM> |