Tema: Re: CROSS, REQ: asmens kodo validavimo regexp
Autorius: Audrys
Data: 2016-01-15 14:53:23
o jei ziopla teta tais laikais kai buvo skirstomi ak is sasuvinuko ir datu 
primale kreivu? dublikatu ak pas sodra girdejau kad yra ......

"Laimis"  wrote in message news:n7ao0p$4ia$1@trimpas.omnitel.net...

zZz rašė:
> Norėjau mėnesių / dienų intervalais. Kažkada rašiau vieną tokį gremėzdą,
> ir galvojau, gal kas panašiai ir asmens kodams rašė. Bet pažiūrėjau tavo
> variantą, ir pagalvojau, kad gal per daug noriu.

Tai intervalai pas mane (antrame variante). Mėnesių skiltyje tik
skaičiai 01-12, dienų: 01-31.
Bet datos realumą vis tiek reikia patikrinti, kaip ir neišvengiamai
apskaičiuoti kontrolinį skaičių. O tai reiškia, kad bet kokiu atveju
reikės naudotis programavimo kalba ir tada sudėtingesnius dalykus ir
tikslingiau ir paprasčiau daryti programoje, o ne regexp'e. KISS.

Juk paprasta ir aišku:

<...>
     if ak_match_regexp(src) {
         // named capture kintamieji arba $1 - $6
         return is_valid_ak(lytis, metai, mėnuo, diena, seqno, ctlno)
     }
<...>


function is_valid_ak(lytis, metai, mėnuo, diena, seqno, ctlno)
{
   data = get_date(lytis, metai, mėnuo, diena)
   return is_valid_date(data) and
          check_ctl_sum(lytis, metai, mėnuo, diena, seqno, ctlno)
}