Search by

gabrieldevro / laravel-romanian-rules

Gabrieldevro

Laravel validation rules for Romanian data: CNP, CUI/CIF, IBAN and phone numbers.

Package info

github.com/Gabrieldevro/laravel-romanian-rules

pkg:composer/gabrieldevro/laravel-romanian-rules

Statistics

Installs: 1

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-10-21 11:59 UTC

This package is auto-updated.

Last update: 2026-10-28 00:13:32 UTC


README

Reguli de validare Laravel pentru date românești: CNP, CUI/CIF, IBAN și număr de telefon.
Laravel validation rules for Romanian personal codes, company tax IDs, IBANs and phone numbers.

tests Laravel PHP License

De ce

În aproape orice magazin online sau aplicație din România trebuie validate CNP-uri, coduri fiscale pentru facturare pe firmă, IBAN-uri și numere de telefon. Regulile de tip regex lasă să treacă date greșite. Pachetul verifică cifrele de control oficiale:

Regulă Ce verifică
cnp 13 cifre, sex/secol, dată de naștere reală (inclusiv ani bisecți), cod de județ valid, cifra de control (cheia 279146358279)
cui 2–10 cifre, cu sau fără prefixul RO, cifra de control (cheia 753217532)
ro_iban format RO + 22 de caractere și verificarea mod 97 (ISO 13616)
ro_phone fix sau mobil, acceptă 07…, +40…, 0040…, cu spații, puncte și cratime
ro_mobile doar numere de mobil (07…)

Instalare

composer require gabrieldevro/laravel-romanian-rules

Service provider-ul se înregistrează automat.

Utilizare

use Gabrieldev\RomanianRules\Rules\{Cnp, Cui, RoIban, RoPhone};

$request->validate([
    'cnp'     => ['required', new Cnp],
    'cui'     => ['nullable', new Cui],        // „RO45845765” sau „45845765”
    'iban'    => ['required', new RoIban],     // spațiile sunt ignorate
    'telefon' => ['required', RoPhone::mobile()],
]);

// sau ca text
$request->validate([
    'cnp' => 'required|cnp',
    'cui' => 'nullable|cui',
    'iban' => 'required|ro_iban',
    'telefon' => 'required|ro_phone',
]);

Normalizarea telefonului

use Gabrieldev\RomanianRules\Validators;

Validators::normalizePhone('0743 543 100');  // "+40743543100"
Validators::normalizePhone('0040743543100'); // "+40743543100"
Validators::normalizePhone('123');           // null

Algoritmii pot fi folosiți și direct, fără Laravel: Validators::cnp(), Validators::cui(), Validators::iban(), Validators::phone().

Mesaje de eroare

Mesajele vin în română și engleză. Le poți personaliza după ce le publici:

php artisan vendor:publish --tag=romanian-rules-lang

Teste

composer test

Testele acoperă CNP-uri valide și invalide (dată imposibilă, județ inexistent, cifră de control greșită), CUI cu și fără RO, IBAN-uri valide sau străine și normalizarea telefonului, pe PHP 8.2–8.4 și Laravel 12.

Făcut de Gabriel Dev: magazine online, aplicații Laravel și integrări pentru piața din România.