Autor Zpráva
adam22
Profil
Může mi prosím někdo alespoň přiblížit tenhle javascritovej(PHP) kód. Díky
<SCRIPT LANGUAGE="JavaScript"><!--
function zkontroluj(formular)
{
if (window.RegExp)
{
re = new RegExp("^[^.]+(.[^.]+)*@([^.]+[.])+[a-z]{2,3}$");
if (!re.test(formular.email.value))
{
alert("Zadaná adresa není správnou adresou elektronické pošty!");
formular.email.focus();
return false;
}
}
// -->
</SCRIPT>
<form action="insert.php3" method="post" onSubmit="return zkontroluj(this)">
<input type="text" name="email" value="@" size="30" maxlength="60" class="inputbook">
</form>
peta
Profil
onSubmit="return zkontroluj(this)
pokud je zaply JS, tak pri pokusu odeslat formular zavolej funkci zkontroluj s parametrem THIS, coz je odkaz na tag FORM ktery ve funkci potom pojmenovavas jako "formular"
takze, pri odeslani zavolas funkci a jeji vysledek rozhodne, zda se formular odesle nebo ne,

V pripade, ze mas JS vypnuty, odesle se na adresu v action.

if (window.RegExp) - existuje funkce pro regularni vyrazy?
re = new RegExp("^[^.]+(.[^.]+)*@([^.]+[.])+[a-z]{2,3}$");
- vytvor regularni vyraz
if (!re.test(formular.email.value))
- otestuj formular.email.value na regularni vyraz
if (!re..) jestlize test fuknce vrati !=negaci ano / ne -> return true / false vystup z funkce je ano

regularni vyraz je sada instrukci pro slozeni retezce (regexp.cz, visibone.com)
cili konktretne
"^[^.]+(.[^.]+)*@([^.]+[.])+[a-z]{2,3}$"
"^...$" - reg. vyraz musi sedet presne na zacatek a konec retezce
tj. "^a.*b$" sedi jen pro retezce
"a0123b", "aasfb", "ab", "a ssfgbb aa b"
nesedi pro
"neco.a456b" (kde retezec nezacina a, ikdyz konci b)
. - jakkoliv znak
[^.] - 1 znak, ktery neni roven "."
+ - predchozi znak v poctu 1 az nekonecno, tj. [^.]+ 1-n znaku, ktere nejsou "."

[^.]+(.[^.]+)*
1-n znaku, ktere nejsou "."
pak 1 jakykoliv znak (tez by to mohla byt tecka, ale ta se zalomitkovava jednim zpetnym lomitkem \.)
pak 1-n znaku, ktere nejsou "."
kombinace v zavorce opakovana 0-n
jinymi slovy, jestli je ten uprostred tecka, pak
"aaa.aaa", "a.a", "a", "a.a.a.a.a.a.a"

@ - znak zavinac (mozna by mel byt taky zalomitkovany, viz http://www.visibone.com/regular-expressions/)

([^.]+[.])+
kombinace: ((netecka)1-n krat + tecka) 1-n krat

[a-z]{2,3}
na konci 2-3 znaky od a do z (minimalne 2, maximalne 3)

samozrejme struktura mailove adresy vypada uplne jinak, toto je jen nejake zjednoduseni, ktere umoznuje jen
abcd.efg.hij_#klm@xy$%&z.a%$%bc.def
.def sice muze byt .org .cz .com ale tez ahoj.museum:8080
s cimz tvuj vyraz vubec nepocita, navic povoluje v mailove adrese vsechny znaky krome tecky. Norma je daleko prisnejsi
azAZ09\!#\$%&'\*\+-\/\=\?\^_\`\{\|\}~
jak vidis, $ povoleny treba je, ale dvojita uvozovka treba uz ne nebo řšč mezera, ktere se pisi s procenty mezera = %20
adam22
Profil
hele moc děkuju. musel si s tim dát moc práce ... fakt moc díky
Toto téma je uzamčeno. Odpověď nelze zaslat.