• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyrażenia regularne zbiór liter + jedna liczba w nim

Object Storage Arubacloud
0 głosów
90 wizyt
pytanie zadane 29 grudnia 2018 w JavaScript przez Q7V Gaduła (4,250 p.)

Cześć, pytanko odnośnie wyrażeń regularnych. Mam do zrobienia miernik hasła - prościutki. Szukam przykładów w sieci podobnych, ale na próżno.

 

Otóż mam sobie jakieś słowo i ono ma od 4 do 6 znaków - ok, to mam. Ale spośród tych znaków w tym wyrazie musi być cyferka.

np. "kot3k"

a odrzucamy "kotek"

Obecnie mam takie wyrażenie

^[A-z]{4,6}$

 

1 odpowiedź

+1 głos
odpowiedź 29 grudnia 2018 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 29 grudnia 2018 przez Q7V
 
Najlepsza

Jeśli chciałbyś to zrobić tylko regexp to będzie to nieco bardziej skomplikowane:

const reg = /^(?=.*[a-z])(?=.*\d)[a-z\d]{4,6}$/i

reg.test('kot3k');   //true
reg.test('kotek');   //false
reg.test('1aaa');    //true
reg.test('1aaaaa');  //true
reg.test('1aaaaaa'); //false
reg.test('12345');   //false
reg.test('1234a');   //true

Caly problem polega na tym, aby umożliwić dowolną lokalizację cyfry i liter, dlatego nie możesz zrobić regexp typu [a-z]\d, bo wymuszalbyś najpierw literę, a potem cyfrę, Ty natomiast nie podałeś takich warunków, więc regexp musi być elastyczny.

Jeśli jednak nie masz doświadczenia z regexp to polecałbym zwalidować to w osobnych krokach, czyli np:

/^[a-z\d]{4,6}$/.test(value); //test długości i dopuszczalnych znaków

/\d+/.test(value);    //test czy jest min. jedna cyfra
/[a-z]/i.test(value); //test czy jest litera

co więcej, zapis A-z jest błędny, a przynajmniej prawdopodobnie błędny bo nie oznacza zakresu liter A-Za-z, ale bierze też znaki pośrednie - zobacz sobie w tablicę ASCI co tam siedzi między tymi literami :) Dlatego lepiej zapisać [a-z] i dodać flagę "i".

W drugim przykładzie robimy tak, że najpierw badamy czy w ogóle cały ciag sklada się jedynie z dozwolonych znaków w ilości od 4 do 6, a dopiero potem testujemy istnienie poszczególnych wymaganych znaków (bo pierwszy test przejdzie np. dla 12345 czy abcde, i dopiero drugi i trzeci wyłapią tu błąd walidacji).

Podobne pytania

0 głosów
1 odpowiedź 90 wizyt
0 głosów
2 odpowiedzi 255 wizyt
pytanie zadane 10 czerwca 2023 w JavaScript przez andrzej.polak Nowicjusz (220 p.)
0 głosów
1 odpowiedź 284 wizyt
pytanie zadane 22 maja 2016 w JavaScript przez remo82 Użytkownik (560 p.)

92,555 zapytań

141,402 odpowiedzi

319,540 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...