|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
Тема
|
Валидиране на ЕГН, Данъчен Номер и БУЛСТАТ
|
|
Автор |
Vroomfundel (неиздържал) |
Публикувано | 07.01.05 17:38 |
|
Първи въпрос - могат ли да се валидират с регулярен израз. Нали за всеки краен автомат съществува регулярен израз, който разпознава същото множество от думи. И така като ги гледам алгоритмите ми се струва, че могат да се проверят с краен автомат, макар и сложен, защото само проверката за коректна дата е сложна, за делението с остатък да не говорим, но не съм се замислял много сериозно, а разни авторитети ми казаха, че не може, та за това реших да попитам, преди да тръгна по стъпките на руския учен Тепловодкин*.
Всъшност, уточнение. Знам алгоритмите само за ЕГН и БУЛСТАТ. ДН не знам как се валидира и това всъшност е нулевия въпрос.
Втори въпрос - ако се окаже че е възможно и някой го е може ли да даде някои regex насам, че това си е немалко главо блъскане.
Мерси и приятен weekend на всички
* Тепловодкин - откривателя на топлата вода
ERASE RACISM
| |
Тема
|
Елементарно Уотсън
[re: Vroomfundel]
|
|
Автор | Penguin (Нерегистриран) |
Публикувано | 07.01.05 18:03 |
|
Ето ти го регулярния израз:
валидно_ЕГН_1 | валидно_ЕГН_2 | валидно_ЕГН_3 | ... | валидно_ЕГН_NNNNNN
естествено трябва да изредиш всички валидни ЕГН-та...
| |
|
Като ти прочетох второто изречение и ме стегна главата. Стига с тия крайни автомати бе, хора! Оставете ги на факултета по автоматика. :)
Струва ми се добра идея, и трябва да пиша на светилата от ФКСУ и ФМИ (двете пътеводни светлини в софийското равно поле), като връчват дипломите на своите нови кадри, да ги предупреждават, че ако мислят да се занимават с програмиране е добра идея да си оставят информатиката в университета. Всъщност, направо да го напишат на входната врата...
Не че темата е такава всъщност, ама тия крайни автомати пак ме подсетиха за разни колеги, дето много обичат да напишат нещата абстрактно. И то колкото по-абстрактно, толкова по-абстрактно! И понякога така се увличат, че забравят, че ЦПУ-то също е краен автомат, а и паметта не е безкрайно голямо число, колкото и да е достатъчно голямо.
Anyway. Работната седмица свърши преди няколко часа, тъй че аз вече бездруго не разбирам от компютли.
10х за пожеланието, приятен уикенд и от мен.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
| |
Тема
|
Re: Валидиране на ЕГН, Данъчен Номер и БУЛСТАТ
[re: Vroomfundel]
|
|
Автор | Vlady (Нерегистриран) |
Публикувано | 08.01.05 10:28 |
|
ЕГН:\d{10}
Булстат:([Юю]?\d{9})|(\d{13})
Данъчен номер:\d{10}
Алгоритъм за данъчен номер:
int []fact=new int{7,8,9,4,5,6,7,8,9};
int sum=0,num;
for(int i=0;i<9;i++)
{num=int.Parse(dn.Substring(i,1));
sum+=num*fact;
}
sum%=10;
num=int.Parse(dn.Substring(9,1));
return (sum==num);
Алгоритъма е на C#.
Посочените регулярни изрази определят само дали е валиден формата на съответния номер.Изчисляването на контролната сума следва да се реализира отделно.
| |
Тема
|
Re: Валидиране на ЕГН, Данъчен Номер и БУЛСТАТ
[re: Vlady]
|
|
Автор | ьп (Нерегистриран) |
Публикувано | 09.01.05 15:09 |
|
За ЕГН-тата и номерата имаше подобен алгоритъм по модул 11. Някой беше казал, че работи и за номера на лични карти и сметки в ДСК
| |
Тема
|
Re: Валидиране на ЕГН, Данъчен Номер и БУЛСТАТ
[re: Vlady]
|
|
Автор |
Vroomfundel (неиздържал) |
Публикувано | 18.01.05 10:58 |
|
Този алгоритъм пробвал ли си го? Аз го взех на готово, още не съм го тествал, но попаднах на един друг:
първите 9 цифри се умножават съответно по тези множители:
4 3 2 7 6 5 4 3 2
Контролната цифра е равна на 11 минус остатъка на сбора разделен на 11.
Ако контролната цифра е 10 - се приема за 0.
Кой ли е верния? В краен случай опитите ще покажат
ERASE RACISM
| |
|
Аз мислех, че знаеш формулите и искаш да си правиш регулярни изрази да си упражняваш информатиката. Ако ти трябва формула кажи, ша ти дам. Ма регулярни изрази нямам намерение да ти пиша.
Специално тва дето си го написал е за данъчен номер. Не вярвам да е грешно, ма ти за всеки случай си го пробвай. Ако ти трябват формулите за ЕГН, ЕЧН, Булстат свиркай и не баламосвай народа с регулярни изрази.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
| |
|
Формулата е вярна, пробвах го
Само за ЕНЧ нямам, дай насам pls, не съм сигурен че ще трябва, но както казва дядо ми "по-убу да артиса, от колкот' да не стигне". Мерси
А за регулярните изрази питах, защото ми се стори много романтично да си поиграя два дни и да родя един регулярен израз за Булстат, и после само copy-paste, няма значение кой на какъв език пише. Особено с .net-ските валидатори става перфектно, никакъв код, валидация и при клиента, и при сървъра и т.н. Естествено, най-добре би било някой преди да го е правил
ERASE RACISM
| |
|
d1 ... d10
d10 =
(d1*21 +
d2*19 +
d3*17 +
d4*13 +
d5*11 +
d6*9 +
d7*7 +
d8*3 +
d9*1) mod 10
Не гарантирам дали е вярно, никога не съм го пробвал. Тук някъде го прочетох и веднага си го записах. Тоя който го търсеше каза, че било вярно ( ако не ме лъже паметта ).
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_Редактирано от Colombino на 18.01.05 17:49.
| |
|
Няма проблеми, лесно се тества.
Мерси
ERASE RACISM
| |
|
Страници по тази тема: 1 | 2 | 3 | (покажи всички)
|
|
|