Tema: Re: CROSS, REQ: asmens kodo validavimo regexp
Autorius: zZz
Data: 2016-01-15 09:44:48
Taip ir padarysiu. Per daug perfekcijos turėjau. Dėkui.



"Laimis" <wiela@centras.lt> wrote in message 
news:n768mi$e4b$1@trimpas.omnitel.net...
> zZz rašė:
>> Lietuviško asmens kodo šabloną.
>
>
> Pats paprasčiausias (POSIX; veiks praktiškai visur, nors dar nepaminėjai 
> programavimo kalbos/aplinkos, kurioje regexp'as turi veikti) gali būti 
> toks:
>
> [3-6][0-9]{2}[0,1][0-9][0-9]{2}[0-9]{4}
>
> Tačiau datų teisingumo jis netikrina, tad praeis ir 00 mėnuo/diena ir
> 19 mėnuo ir 99 diena.
>
> Sudėtingesnis (negali būti akivaizdžiai neteisingų mėnesių/dienų; mėnuo: 
> 01-12, diena: 01-31; eilės nr. negali būti 000) ir jau PCRE (Perl 
> Compatible RegExp):
>
> \b
> (?<lytis>[3-6])
> (?<metai>[0-9]{2})
> (?<mėnuo>0[1-9]|1[0-2])
> (?<diena>0[1-9]|1-2[0-9]|3[0-1])
> (?<seqno>(?!000)[0-9]{3})
> (?<ctlno>[0-9])
> \b
>
>
> Named capture grupės (visi struktūriniai AK elementai) — tolimesnio 
> tikrinimo/apdorojimo patogumui.
> Belieka patikrinti datos realumą (ar tam tikrų metų tam tikras mėnuo gali 
> turėti 29-31 d.) ir kontrolinį skaičių (kurį dar reikia apskaičiuoti; 
> google it)
>
>
>
>
>
>
>