Potrzebuję kilkunastu dobrze sprawdzonych wyrażeń regularnych (np. do walidacji formularzy tzn. np. z datą, godziną, emailem, numerem telefonu itd. itd).
Mógłbym sam je napisać, ale nie będą idealne. Mógłbym poszukać forach/stackoverflow, ale też nie jest pewne, że nie zawierają jakiś błędów.
Najchętniej wziąłbym z jakiegoś gotowca napisanego przez profesjonalistów. Wiem, że np. w C# (ASP.NET) są zaszyte gotowe do sprawdzania, podobnie jest chyba w AngularJS. Nie wiem tylko jak stamtąd wyciągnąć same wyrażenia. Są gdzieś jeszcze? Może coś w Javie? Lub w jakiejś "dokumentacji"?
@mk321: Czyli, że w jakich? Nie ma czegoś takiego jak „pro najlepsze wyrażenia”, bo nie wszystko dobrze waliduje się regexpami + są różne oczekiwania wobec walidacji.
Np email można walidować na gazylion różnych sposobów (od prostego sprawdzenia czy jest małpka, po sprawdzanie czy domena z mejla odpowiada).
Popatrz np na tę dyskusję: jedni powiedzą, że walidacja emaila za pomocą tej biblioteki jest zbyt luźna, a jeśli
@MacDada: Chcę mieć w aplikacji w Javie i JavaScript walidację taką jak w Springu (adnotacje), ale nie chcę używać ich biblioteki (ani żadnych dodatkowych - sam czysty kod).
Oczekiwanie wobec walidacji mam takie, żeby było jak w gotowych profesjonalnych bibliotekach (choćby ta ze Springa/Hibernate).
Odnośnie samego emaila, to według mnie poprawne są te implementujące oficjalny standard (RFC 5322). Ale jeśli rzeczywiście w bibliotekach go nie
@mk321: Nie ogarniesz tego dobrze „sam” i zresztą nie ma sensu. Użyj bibliotek. Do tego są, żeby nie wynajdować koła na nowo.
Choćby dlatego, że jak jakaś reguła będzie miała błąd, to biblioteka zostanie zaktualizowana i Twój kod też. Czy może masz zamiar potem ręcznie śledzić wszystkich wokół i dostosowywać swój kopiuj–wklejkowany kod?
Java i Javascript to dwie zupełnie odmienne technologie (mimo, iż nazwa sugeruje podobieństwo). Pamiętaj o celach walidacji:
Choćby dlatego, że jak jakaś reguła będzie miała błąd, to biblioteka zostanie zaktualizowana i Twój kod też. Czy może masz zamiar potem ręcznie śledzić wszystkich wokół i dostosowywać swój kopiuj–wklejkowany kod?
@MacDada: chcę po prostu zobaczyć jaki jest stan na teraz. Nawet jeśli nie są idealne, nawet jak będą aktualizowane.
Java i Javascript to dwie zupełnie odmienne technologie (mimo, iż nazwa sugeruje podobieństwo).
@mk321: BTW, zauważ, że większość walidatorów nie leci na regexpach – jeśli chcesz mieć dobrą obsługę, konfigurowalność, CZYTELNOŚĆ => to regexpy są do kitu :P Już nie wspomnę o innych aspektach, typu właśnie konieczność użycia bazy danych, bibliotek niższego poziomu, etc ;-)
Właśnie nie mogłem znaleźć tych klas "walidatorów".
Teraz widzę, że od środka wygląda to trochę inaczej niż myślałem, i raczej mniej niż więcej jest oparte na wyrażeniach regularnych (no i jednak nie mogę ich tak łatwo skopiować).
No i w emailu odwołują się do RFC, ale nie implementują całości, bo nie potrzeba - to chciałem wiedzieć.
Potrzebuję kilkunastu dobrze sprawdzonych wyrażeń regularnych (np. do walidacji formularzy tzn. np. z datą, godziną, emailem, numerem telefonu itd. itd).
Mógłbym sam je napisać, ale nie będą idealne. Mógłbym poszukać forach/stackoverflow, ale też nie jest pewne, że nie zawierają jakiś błędów.
Najchętniej wziąłbym z jakiegoś gotowca napisanego przez profesjonalistów. Wiem, że np. w C# (ASP.NET) są zaszyte gotowe do sprawdzania, podobnie jest chyba w AngularJS. Nie wiem tylko jak stamtąd wyciągnąć same wyrażenia. Są gdzieś jeszcze? Może coś w Javie? Lub w jakiejś "dokumentacji"?
Jak #php to np https://github.com/symfony/Validator
Tu coś znalazłem:
https://en.wikipedia.org/wiki/Bean_Validation
http://beanvalidation.org/
http://hibernate.org/validator/
Ale nadal nie umiem wyciągnąć stamtąd gotowych wyrażeń.
Tu mam kod źródłowy: https://github.com/hibernate/hibernate-validator
No i np. dla emaila coś jest: https://github.com/hibernate/hibernate-validator/blob/6ae19900e2951513034534f9aec786689da9b4d8/engine/src/test/java/org/hibernate/validator/test/internal/engine/methodvalidation/returnvaluevalidation/ContactBean.java
Ale dla innych (choćby "post code") nie mogę znaleźć ( ͡° ʖ̯ ͡°)
No i mam wątpliwości czy na
@mk321: Czyli, że w jakich? Nie ma czegoś takiego jak „pro najlepsze wyrażenia”, bo nie wszystko dobrze waliduje się regexpami + są różne oczekiwania wobec walidacji.
Np email można walidować na gazylion różnych sposobów (od prostego sprawdzenia czy jest małpka, po sprawdzanie czy domena z mejla odpowiada).
Popatrz np na tę dyskusję: jedni powiedzą, że walidacja emaila za pomocą tej biblioteki jest zbyt luźna, a jeśli
@MacDada: Chcę mieć w aplikacji w Javie i JavaScript walidację taką jak w Springu (adnotacje), ale nie chcę używać ich biblioteki (ani żadnych dodatkowych - sam czysty kod).
Oczekiwanie wobec walidacji mam takie, żeby było jak w gotowych profesjonalnych bibliotekach (choćby ta ze Springa/Hibernate).
Odnośnie samego emaila, to według mnie poprawne są te implementujące oficjalny standard (RFC 5322). Ale jeśli rzeczywiście w bibliotekach go nie
Choćby dlatego, że jak jakaś reguła będzie miała błąd, to biblioteka zostanie zaktualizowana i Twój kod też. Czy może masz zamiar potem ręcznie śledzić wszystkich wokół i dostosowywać swój kopiuj–wklejkowany kod?
Java i Javascript to dwie zupełnie odmienne technologie (mimo, iż nazwa sugeruje podobieństwo). Pamiętaj o celach walidacji:
1.
@MacDada: chcę po prostu zobaczyć jaki jest stan na teraz. Nawet jeśli nie są idealne, nawet jak będą aktualizowane.
@MacDada: to wiem, 10 latu temu gimbazie
@mk321: To jest faktycznie „tylko” test czy walidacja działa poprawnie.
Tu masz „constrainty”, czyli „definicje” co należy zwalidować, np możesz jakieś pole obiektu oznaczyć „constraintem”
URL
, dzięki czemu system walidacji wie, że ma sprawdzić, że pole jest URLem:https://github.com/hibernate/hibernate-validator/tree/master/engine/src/main/java/org/hibernate/validator/constraints
Tu masz „walidatory” – czyli klasy, które sprawdzają wartości odpowiadające zdefiniowanym constraintom:
https://github.com/hibernate/hibernate-validator/tree/master/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators
Np tutaj masz ową walidację URLa:
https://github.com/hibernate/hibernate-validator/blob/6ae19900e2951513034534f9aec786689da9b4d8/engine/src/main/java/org/hibernate/validator/internal/constraintvalidators/hv/URLValidator.java
----
Podobną strukturę
Popatrz na walidację ISBN:
https://github.com/symfony/Validator/blob/master/Constraints/IsbnValidator.php#L129
Właśnie nie mogłem znaleźć tych klas "walidatorów".
Teraz widzę, że od środka wygląda to trochę inaczej niż myślałem, i raczej mniej niż więcej jest oparte na wyrażeniach regularnych (no i jednak nie mogę ich tak łatwo skopiować).
No i w emailu odwołują się do RFC, ale nie implementują całości, bo nie potrzeba - to chciałem wiedzieć.