[js] walidacja loginu czyli wyrażenia regularne.

0

Witam, mam problem ze stworzeniem wyrażenia regularnego. Nie pomagają żadne podpowiedzi z Google (jest tego pełno) ale nie mogel znaleźć nic prostego. Pomyślałem, że nigdy tu się nie zawiodłem wiec postaram sie was zapytać o zdanie.

function czy_poprawny_login(login) {
	var warunki = /^[a-zA-Z0-9._\-]$/;
	return warunki.test(login);
}

function czy_dobry_login(login) {
	wypisz_tekst = document.getElementById('login_sprawdz');	
  	if ((login.length>5) && (login.length<51) && (czy_poprawny_login(login))) {
		wypisz_tekst.src = 'start.png';
	} else {
		wypisz_tekst.src = 'stop.png';
	}
}

powyższy skrypt ma za zadanie po wciśnięciu jakiegokolwiek przycisku na klawiaturze wykonać się i pokazać za pomocą obrazka czy login jest poprawny czy nie. Jeżeli w funkcji czy_dobry_login() usunę warunek (czy_poprawny_login(login)) to skrypt działa poprawnie z tym, że nie sprawdza czy nie zostały wpisane znaki inne niż litery małe duże cyfry i _ . -. Nie wiem co się dzieje.

Proszę o podpowiedź i jeżeli znacie taki to jakiś prosty kursik jak tworzyć takie wyrażenia.

0

var warunki = /^[a-zA-Z0-9</b>._-]+$/;

+ ważny, inaczej zwróci false tylko dla ciągu złożonego z 1 znaku
</b> przed . - kropka oznacza dowolny znak, trzeba posłużyć się znakiem ucieczki
</b> przed ostatnim - nie jest potrzebny, znak ucieczki jest potrzebny tylko gdy - występuje pomiędzy innymi znakami.

0

dzięki nav ;) zawsze można na Ciebie liczyć...

0
nav napisał(a)

</b> przed . - kropka oznacza dowolny znak, trzeba posłużyć się znakiem ucieczki
WRONG! [diabel]
Znak kropki w klasie [.] nie ma znaczenia specjalnego i nie trzeba go "eskejpować" (a nawet nie należy by nie zaciemniać kodu).
Innymi słowy [.] == [.]

0

dokładnie, piszesz żeby nie escapować "-" na końcu tymczasem samemu wprowadzasz dużo większy błąd [diabel]
a escapowanie "-" to nie jest aż takie złe ze względu na to że kiedyś się przez to już naciąłem
a konkretniej: wprowadziłem pewnego dnia modyfikację dodając znaki do zbioru i tak oto przez to że "-" był na końcu nie poprzedzony backslashem a ja tego nie zauważyłem - zrobił się przedział, skrypt przestał działać prawidłowo a ja baaardzo długo szukałem błędu

0

To jak już sobie tak tu miło gawędzimy, to dodam, że ']' tez nie trzeba eskejpować :) jeśli jest to pierwszy znak w klasie. Czyli [][.-] to klasa dopasowująca myślnik, kropkę i nawiasy kwadratowe :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1