Tema: Re: CROSS, REQ: asmens kodo validavimo regexp
Autorius: Laimis
Data: 2016-01-15 14:17:29
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)
}