Autor Zpráva
quatzael
Profil
Zkoušel jsem vytvořit testování na rodné číslo, ale nějak mi nefunguje kontrola pomocí regulárního výrazu:

var patt = /[0-9]{2}[01235678][0-9][0-3][0-9]\/?[0-9]{3,4}/g;

Když za rodné číslo píšu další znaky tak to pořád vyhodnocuje jako ok..
Tori
Profil
V PHP by okolo musely být metaznaky \b (hranice slova), nevím jestli se dají použít i v JS. Nebo jestli testujete políčko formuláře, tak stačí nejdřív odmazat bílé znaky okolo a k reguláru přidat kotvy pro začátek a konec řetězce.
quatzael
Profil
Tori:
Takže takhle:
var patt = /^[0-9]{2}[01235678][0-9][0-3][0-9]\/?[0-9]{3,4}$/g; ??

Já s regulárními výrazy opravdu zacházet neumím, takže vůbec nevím co a jak..
anonymní
Profil *
quatzael:
ono je to složitější:
- na 3. pozici rodné čísla mohou být pouze znaky „0, 1, 5, 6“, zbylé tebou uvedené nikoliv.
- na 4. pozici mohou být znaky:
- - 1 - 9 (pokud je na 3. pozici „0“ nebo „5“)
- - 0 - 2 (pokud je na 3. pozici „1“ nebo „6“)
- na 6. pozici bude opět omezený výběr, a to v závislosti na 5. pozici (pokud 5. bude číslice „3“, na 6. pozici moc možností nezbude. V únoru je na 5. pozici chybně i číslice „3“ (tedy nutno porovnávat i se zadaným měsícem na 3. a 4. pozici RČ.

A konečně, desetičíselné rodné číslo (neplatí pro RČ s trojčíslím na konci), musí vyjít číslo dělitelné 11 beze zbytku.
- RČ „781105/0335“ může být teoreticky platné (muž, datum narození 5. listopadu 1978 v Praze), protože 7811050335 % 11 == 0
- RČ „781105/0336“ nemůže být platné ani teoreticky (muž, datum narození 5. listopadu 1978 v Praze), protože 7811050336 % 11 != 0
quatzael
Profil
anonymní:
Dík za reakci, ale mě šlo teď čistě o ten regulární výraz jako takovej. A vypadá, že teď to jede tak jak má.. (možná - blbě se testují všechny varianty)..
Ten regulární výraz mám jen jako výchozí podmínku k dalšímu testování. Tzn. od 1954 další ročníky koncové číslo 4-místné a kontrola dělitelnosti 11. A první část testuju jestli takové datum vůbec existovalo.

Jinak na té třetí pozici může být i 2/3 u mužů a 7/8 u žen (nově se to přidalo pro případ nedostatku čísel)..
anonymní
Profil *
quatzael:
Jinak na té třetí pozici může být i 2/3 u mužů a 7/8
to se mi nezdá. V době boomu se to zvládlo bez nich a nyní, kdy porodnost rok co rok klesá, už to nejde?

Jinak na samotném RV chybu nevidím, měl by být v pořádku.
Jan Tvrdík
Profil
Doporučuji si přečíst článek o rodném čísle na Wikipedii, mají tam docela pěkně popsané různé výjimky.
Medvídek
Profil
A aby to bylo kompletní, tak i článek od Davida Grudla:
http://phpfashion.com/jak-overit-platne-ic-a-rodne-cislo

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: