Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyrażenie regularne, Walidacja adresu email
batman
post
Post #1





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Mam problem z wyrażeniem regularnym, sprawdzającym poprawność wprowadzonego adresu e-mail.
Kod
var re = new RegExp("^([0-9a-zA-Z_\.]+)@([0-9a-zA-Z_\.]+)\.([0-9a-zA-Z]){2,3}$");
alert(re.test(val));

gdzie val jest wartością przekazaną do funkcji jako argument.

Jeśli podam niepoprawny adres wszystko działa jak należy, jednak jeśli podam test@test.aaaaa, wówczas wyświetlona wartość to true, mimo, że po kropce występuje więcej znaków niż w regule. Gdzie jest błąd?

P.S.
Szukałem na googlach. Kilka sprawdzanych skryptów również się myli.
Go to the top of the page
+Quote Post
toolmaniak
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 29.05.2006
Skąd: /dev/null

Ostrzeżenie: (0%)
-----


Ja mam np. takie wyrażenia regularne w skrypcie walidacyjnym

Kod
reg = /^[a-zA-Z0-9±ćęłń󶿼±ĆĘŁŃӶݬ]{1,30}
@[a-zA-Z0-9±ćęłń󶿼±ĆĘŁŃӶݬ]+
(\.[a-zA-Z0-9±ćęłń󶿼±ĆĘŁŃӶݬ]+)+$/;
    wyn = document.forms['formularzRekrutacyjny'].email.value.match(reg);


I też przechodzi coś takiego jak Tobie. Ale pamiętajmy restrykcje podczas walidacji restrykcjami, ale nie można przesadzać. Weźmy, że skrypt sprawdza czy po kropce czy występuje trzy członowa nazwa domeny. A jeśli mam .pl to co? Dlatego ostatnio walidatory sprawdzają czy po kropce występuje choć jeden znak. Musimy iść z duchem czasu. nazwy domen się zmieniają,chociażby np.: .info czy jedną z nowszych .travel. One wszystkie muszą przejść walidację. Gorzej jak skrypt podczas nie bierze pod uwagę, że nick też może zawierać kropkę np. podział na imie i nazwisko i takie tam. Dlatego jak sprawdza czy jest et, nazwa serwera i domena to raczej wydaje mi się, że jest dobrze. A domena jak mówię może być dłuższa...

Ten post edytował toolmaniak 15.08.2007, 22:30:07
Go to the top of the page
+Quote Post
barat
post
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 0
Dołączył: 19.05.2007

Ostrzeżenie: (0%)
-----


a może niech skrypt sprawdzi, czy strona po @ istnieje ?
Z tego co mi się wydaje większość (wszystkie) domeny adresów email mogą być wklepane w przeglądarkę i pokazują jakąś stronę ...

na przykład ktos@gmail.com , ktos@wp.pl itp ...
Może więc przez JS lepiej sprawdzić czy to po @ kieruje na istniejącą stronę ? (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif)
Zapewne jest jakaś funkcja "pingująca" lub w inny sposób sprawdzająca, czy dany adres istnieje ? ;> A może nie ? ... na JS sie nie znam ...

wtedy pattern będzie w teorii

(wszystkie alfanumeryki z myślnikiem, podkreśleniem i kropką)@(domena do sprawdzenia czy istnieje) ...

Ten post edytował barat 15.08.2007, 22:39:16
Go to the top of the page
+Quote Post
envp
post
Post #4





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Po pierwsze - to najdłuższe domeny globalne mają i tak po znaków - chocby *.museum, Po drugie - jak ktoś będzie chciał oszukac to i tak oszuka... wiec dajcie spobie siana - lepiej walidowac poprzes przesalnie jakiegos linku aktywacyjnego.... a co regexpa wyglada w porzo nie wiem czemu nie dziala...
Go to the top of the page
+Quote Post
batman
post
Post #5





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




@toolmaniak
Nawet się nad tym nie zastanawiałem. Dzięki za zwrócenie uwagi na to zagadnienie. Zmienię regułkę nieco i pozwolę na dłuższe nazwy. Poza tym znalazłem jeszcze jeden błąd w wyrażeniu.

@envp
To co napisałem ma być wstępnym sprawdzeniem poprawności podanego adresu e-mail. Jest to napisane po to, by użytkownikowi strona się nie przeładowała bez potrzeby.

Niemniej jednak nadal nie wiem gdzie popełniłem błąd w wyrażeniu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:28