[JavaScript] Wczytywanie liter bez znaków specjalnych

0

Witam. Otóż mam do napisania krótki skrypt, który wczytuje dane z klawiatury przez prompt następnie wstawia je do formularza i mam pewien problem. Wczytuję do zmiennej nazwisko znaki z klawiatury i wiem jak ograniczyć, aby po wczytaniu tego nazwisko z jakimiś cyframi wywaliło alert, lecz nie wiem jak to zrobić ze znakami specjalnymi. Byłbym wdzięczny za pomoc.

0

Użyj wyrażeń regularnych. Czyli obiektów RegExp, ale w skryptach używaj /literału_wyrażenia_regularnego/, a nie new RegExp("konstruktora", "");. Google it!

0

Nie używałem nawet nigdy czegoś takiego.

0
<script type="text/javascript">
//<![CDATA[
var nazwisko;
do{
nazwisko=prompt("Podaj swoje nazwisko","");
if(nazwisko.substring(0,nazwisko.length)<96) alert('Podano złe znaki w nazwisku');
}
while (nazwisko.substring(0,nazwisko.length)<96);
//]]>
</script

Obecnie mam coś takiego, 96 oznacza znaki w ascii, lecz nie wiem czy to dobre rozwiązanie i ono niezbyt działa.

0

@j3sh:
Naucz się tych wyrażeń regularnych. Naprawdę. One są obecne nie tylko w JavaScripcie, ale i w PHP, Javie, Perlu... i wielu, wielu innych językach (i nie tylko językach -- używa się ich bezpośrednio w aplikacjach).

Np. tak wygląda wyrażenie, które dopasuje tylko (opcjonalnie otoczony spacjami) ciąg składający się z (jednej lub więcej) normalnych liter (od a do z), polskich znaków diakrytycznych, myślników i spacji. ^ oznacza, że dopasowujemy od początku, a $, że do końca.

^\s*[a-ząćęłńóśźż\- ]+\s*$

Powyższe działa w bardzo wielu językach programowania.

Do tego należy jeszcze dorzucić flagę i, czyli "case insensitive", by dozwolone były wielkie lub małe litery. W JavaScripcie całość, podstawiona do zmiennej re, wygląda tak (wyrażenie regularne umieszczamy pomiędzy znakami /, zaraz za nim możemy umieścić flagi):

var regex = /^\s*[a-ząćęłńóśźż\- ]+\s*$/i;

Poszukaj sobie o tym samodzielnie, naprawdę Ci się to przyda, a jak podam Ci całkiem gotowy kod, to se go wkleisz i o tym zapomnisz :). Też się całe lata męczyłem z funkcjami typu substring i pisałem własny kod parsujący. A potem się okazało, że wyrażenia regularne zrobią to samo w dwóch linijkach. Albo i w jednej.

0

Niestety to co piszę jest wymagane u mnie w szkole, a pisanie nie po zasadach chociaż z pewnością jest o wiele łatwiejsze niezbyt będzie się podobać nauczycielowi, więc byłbym bardzo wdzięczny za podanie tego krótkiego kawałku kodu zważywszy na to, że brakuje mi tylko tego a mogę zarobić sobie szóstkę :P

0

I po co Ci ta szóstka? Takie oceny nic nie znaczą, powiedz nauczycielowi, że daje zadania bezsensu, wstawiać do formularza dane przez prompt? Jaki to ma sens. I co pascala też Was pewnie uczy? Zapytaj się go jak to się ma do interakcji z użytkownikiem? Zrób to całkiem inaczej jak Ci on karze...
Jak będzie w porządku da Ci tą 6-tkę za to, że udowodnisz, że jest głupi. A jak nie to go olej.

0

Wiesz my dopiero zaczynamy, więc nie wiem jak to jest, ale wolałbym sobie to ogarnąć. Jeżeli możecie to podajcie ten kawałek kodu w tym poprawnym stylu lub tym poprawnym.

0

Jak będzie w porządku da Ci tą 6-tkę za to, że udowodnisz, że jest głupi.

Raczej wąpie. Chyba jedynkę ;)

@j3sh - a ty ciągle swoje. Przecież napisali ci że bez RegEx ani rusz w programowaniu... Żebyś miał bliżej: http://www.egrafik.pl/kurs-regex-wyrazenia-regularne/ :) To naprawdę nie jest takie skomplikowane jak myślisz...

0

@msm w naszych realiach pewnie jedynkę, ale ja bym się tylko cieszył na miejscu @j3sh

Nawet nie musisz znać regex, gotowce na to znajdziesz w sieci.
Tu masz tego atomowo dużo: http://regexlib.com/ nic tylko przekopywać zasoby...

Podstawy sobie poznaj, jak Cię zapyta o to w tym chodzi, choć pewnie sam nie będzie wiedział ;)

Wydaje mi się, że Twojemu nauczycielowi, chodzi o zrobienie czegoś do walidowania (sprawdzania formy), jeśli tak jest podrzuć trochę kod to razem poprawimy, ale ja pomogę tylko gdy zlejesz te durnowate prompty i pójdziesz ścieżką mistrzów Zen ;)

0

Ja tam w szkole na programowaniu nie szpanowałem że co to ja umiem, samo przez się wychodziło... ale jak facet robi byka na tablicy w schemacie blokowym, to musiałem zareagować.
sytuacja wygląda tak:
ja: jest błąd;
facet patrzy na tablicę, mruży oczy... patrzy na mnie
ja: powinna być pętla od tego miejsca
facet znowu patrzy na tablicę i mruży oczy
podszedłem do tablicy, dorysowałem strzałkę na pół schematu. Cała klasa się ze mnie śmieje
facet z lekkim uśmieszkiem się patrzy dalej
po około pół minuty wydukał "a no, jest dobrze"
Cała klasa mi później mówiła, że go "zownowałem","zjechałem","rozje..." itd. ...chyba dwóję miałem na koniec...

inna sprawa, że klasy informatyczne to bezsens...

PS. sorry za offtop :P

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