Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko187
  • Hity
  • Mikroblog
  • Zaloguj się
  • Zarejestruj się
Zaloguj się

Popularne tagi

  • #ciekawostki
  • #informacje
  • #technologia
  • #polska
  • #swiat
  • #motoryzacja
  • #podroze
  • #heheszki
  • #sport

Wykop

  • Ranking
  • Osiągnięcia
  • FAQ
  • O nas
  • Kontakt
  • Reklama
  • Regulamin

3

Numerik walidacja PESEL, NIP i REGON w PHP oraz JavaScript/TypeScript

Zrobiłem Numerik bibliotekę do walidacji i parsowania polskich numerów identyfikacyjnych: PESEL, NIP, REGON, KRS, NRB, VAT-EU, IBAN, dowód osobisty i paszport. Dostępna dla PHP i TypeScript/JS, plus gotowe reguły walidacji do Laravela. Zamiast zwracać proste true/false, Numerik zwraca *dlaczego*...

Slashlab
Slashlab
Slashlab
z
wykop.pl
dodany: przedwczoraj, 20:25:33
  • #
    php
  • #
    javascript
  • #
    typescript
  • #
    laravel
  • #
    walidacja
  • #
    opensource
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Zrobiłem Numerik — bibliotekę do walidacji i parsowania polskich numerów identyfikacyjnych: PESEL, NIP, REGON, KRS, NRB, VAT-EU, IBAN, dowód osobisty i paszport. Dostępna dla PHP i TypeScript/JS, plus gotowe reguły walidacji do Laravela.

Zamiast zwracać gołe true/false, Numerik mówi *dlaczego* coś jest nieprawidłowe (zły checksum, niemożliwa data urodzenia, zła długość itd.) i od razu parsuje numer na gotowy obiekt — z PESEL-u wyciągniesz np. datę urodzenia, płeć i wiek jednym wywołaniem.

Zero zależności produkcyjnych, brak wyrażeń regularnych (cała logika na tablicach cyfr, więc bez ryzyka ReDoS), PHP 8.3+, PHPStan poziom 10, pełne testy.

```php

$pesel = Numerik::pesel()->parse('92060512186');

$pesel->getBirthDate()->format('Y-m-d'); // '1992-06-05'

$pesel->getAge(); // liczone od dziś

```

GitHub: https://github.com/sqrcz/numerik

Dokumentacja: https://numerik.slashlab.pl https://numerik-js.slashlab.pl

#programowanie #php #javascript #laravel #opensource

Komentarze (2)

najlepsze

MrDracek
MrDracek
MrDracek
18 godz. i 20 min temu via Wykop
  • 0
Ogólnie sam kod jest ok, ale np. w ValueObjects są typowe problemy z ISP i LSP.
Do tego np. w VatEU masz PL hardcoded w getFormatted, mimo że masz oddzielną metodę zwracającą kod kraju.
W ValidationResult pass, fail i failResult są metodami sztuka dla sztuki, robią tylko i wyłącznie jako alias dla konstruktora. Gdyby chociaż musiały żonglować dużą ilością argumentów, to może jeszcze, ale tak to jest po prostu nadmiarowy kod chyba
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Slashlab
Slashlab
Slashlab
Autor
9 godz. i 58 min temu via Wykop
  • 0
@MrDracek:

Dzięki za merytoryczne code review. Z częścią uwag pełna zgoda, z resztą pozwolę sobie polemizować:

VatEu i hardcoded "PL" - Racja, ewidentne niedopatrzenie. W getFormatted() wbiłem to na sztywno, zamiast użyć $this->getCountryCode()
  • Odpowiedz

Hity

tygodnia

W Polsce jak w lesie. W restauracjach jednak nie będzie nawet szklanki kranówy
W Polsce jak w lesie. W restauracjach jednak nie będzie nawet szklanki kranówy
3224
Polacy tracą na systemie kaucyjnym. Ponad 70% pieniędzy nie wróciło do klientów
Polacy tracą na systemie kaucyjnym. Ponad 70% pieniędzy nie wróciło do klientów
2664
19-letni kot zabrany sprzed prywatnej posesji został uśpiony przez fundację.
19-letni kot zabrany sprzed prywatnej posesji został uśpiony przez fundację.
2507
Czechy za natychmiastowym zamknięciem strefy Schengen dla Hiszpanii
Czechy za natychmiastowym zamknięciem strefy Schengen dla Hiszpanii
2495
Kolejny kraj dopuszcza zawieszenie Hiszpanii w strefie Schengen
Kolejny kraj dopuszcza zawieszenie Hiszpanii w strefie Schengen
2214
Pokaż więcej

Powiązane tagi

  • #webdev
  • #programowanie
  • #mysql
  • #javascript
  • #wydarzeniait
  • #symfony
  • #laravel
  • #wordpress
  • #naukaprogramowania
  • #symfony2
  • #html
  • #python
  • #java
  • #js
  • #pytanie

Wykop © 2005-2026

  • O nas
  • Reklama
  • FAQ
  • Kontakt
  • Regulamin
  • Polityka prywatności i cookies
  • Hity
  • Ranking
  • Osiągnięcia
  • Changelog
  • więcej

RSS

  • Wykopane
  • Wykopalisko
  • Komentowane
  • Ustawienia prywatności

Regulamin

Reklama

Kontakt

O nas

FAQ

Osiągnięcia

Ranking