Когда мы строим интернет -сайт, мы часто используем наш идентификационный номер при регистрации личной информации. Нам нужно проверить нашу идентификационную карту, иначе другие пройдут его, просто введя номер, что заставляет вас чувствовать, что этот веб-сайт очень сделанный дерьмом.
Есть правила для идентификационного номера.
Структура и форма
1. Структура числа
Номер гражданства представляет собой код комбинации функций, состоящий из онтологического кода семнадцатизначного значения и однозначного кода проверки. Заказ о договоренности находится слева направо: шестизначный адресный код, восьмизначная дата кода рождения, код трехзначных последовательности и однозначный код проверки.
2. Адрес
Кодекс административного отделения округа (город, баннер, округ), где находится постоянное место жительства объекта кодирования, должен быть реализован в соответствии с положениями GB/T2260.
3. Дата кодекса рождения
Это указывает на год, месяц и день рождения закодированного объекта. Он выполняется в соответствии с положениями GB/T7408. Там нет сепаратора между годами, месяцем и дневными кодами.
4. Код последовательности
Это указывает на то, что в районе, идентифицированной одним и тем же адресом, номер последовательности, назначенный людям, родившимся в том же году, месяце и дня. Нечетное число кода последовательности назначается мужчинам, и даже числа назначаются женщинам.
5. Проверка кода
Согласно первым семнадцатизначным численным кодам, код проверки, рассчитанная в соответствии с ISO 7064: 1983. Мод 11-2 кода проверки.
Метод расчета
1. Умножьте 17-значный номер предыдущего идентификационного номера на разные коэффициенты. Коэффициенты с первой позиции до семнадцатой позиции: 7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2.
2. Добавьте результат умножения этих 17-значных чисел и коэффициентов.
3. Используйте добавление и разделите на 11, чтобы увидеть, что такое остаток?
4. Остальная часть может иметь только 11 чисел: 0-1-2-3-4-5-6-7-8-9-10. Количество последней идентификационной карты, соответствующей ему, составляет 1-0-X-9-8-7-6-5-4-3-2.
5. Из вышесказанного вы знаете, что если оставшаяся часть составляет 3, 18 -й цифр идентификационной карты появится 9. Если соответствующий номер составляет 2, последнее число идентификационной карты - римское число x.
Например: идентификационный номер человека составляет [53010219200508011x], давайте посмотрим, является ли эта идентификационная карта законной идентификационной картой.
First we get the sum of the product of the first 17 bits [(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)] is 189, а затем разделить 189 на 11-189/11 = 17 ---- 2, то есть остальные числа 2. Наконец, через соответствующие правила вы можете знать, что код проверки, соответствующий оставшимся 2, является x. Следовательно, можно определить, что это правильный идентификационный номер.
Вышеупомянутое выгиб из энциклопедии Baidu.
Это связанная информация, найденная в Интернете.
Основываясь на известной информации, мы можем написать внутреннюю реализацию этого метода в JS. Первую 17-битную проверку легче реализовать, поэтому я не буду много говорить и сосредоточиться на коде проверки последней цифры.
Кода -копия выглядит следующим образом:
// проверка идентификационного номера
функция isidcard (cardid) {
// регулярное выражение идентификационной карты (18 бит)
var isidCard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) (([0 | 1 | 2]/d) | 3 [0-1]) (/d {4} |/d {3} x) $/i;
var stard = "10x98765432"; // номер последней идентификационной карты
var First = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 коэффициент
var sum = 0;
if (! isidcard2.test (cardid)) {
вернуть ложь;
}
var Year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var birthday = cardid.substr (6, 8);
if (день рождения! = DateToString (новая дата (год + '/' + месяц + '/' + day))) {// проверить, является ли дата законной
вернуть ложь;
}
for (var i = 0; i <cardid.length - 1; i ++) {
sum += cardid [i] * first [i];
}
var result = sum % 11;
var last = stard [result]; // рассчитанный последний идентификационный номер
if (cardid [cardid.length - 1] .touppercase () == последний) {
вернуть истину;
} еще {
вернуть ложь;
}
}
// Дата до строки Дата возврата Формат 2008080808
Функция dateToString (date) {
if (date ancessionof date) {
var year = date.getiflyear ();
var month = date.getmonth () + 1;
месяц = месяц <10? '0' + месяц: месяц;
var day = date.getDate ();
день = день <10? '0' + день: день;
Возвращение года + месяц + день;
}
возвращаться '';
}
Здесь подтверждены только 18-значные идентификационные карты, а 15-значные идентификационные карты первого поколения не могут быть использованы.
Здесь мы также проверяем законность дат, такие как нелегальные даты, такие как 0230, 0431, и проверка не будет передана.
Мы также можем добавить этот метод в JQUERY PALIDED для легкой проверки.
Напишите пользовательский метод проверки jQuery
Кода -копия выглядит следующим образом:
// проверка идентификационного номера
jquery.validator.addmethod ("isidcard",
функция (значение, элемент) {
вернуть это.optional (element) || (isidcard (значение));
},
«Номер удостоверения личности является незаконным!»);
Давайте простая демонстрация, чтобы увидеть, как это работает.
Кода -копия выглядит следующим образом:
<! Doctype html>
<html>
<голова>
<meta http-equiv = "content-type" content = "text /html; charset = utf-8" />
<название>
Проверка идентификационного номера
</title>
<script src = "http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js">
</script>
<script src = "http://www.w3cschool.cc/try/demo_source/static/js/jquery.validate.js">
</script>
<script type = "text/javascript">
$ (function () {
$ ("#form1"). Validate ({
правила: {
txtidcard: "isidcard"
}
});
});
// проверка идентификационного номера
функция isidcard (cardid) {
// регулярное выражение идентификационной карты (18 бит)
var isidCard2 =/^[1-9]/d {5} (19/d {2} | [2-9]/d {3}) ((0/d) | (1 [0-2])) (([0 | 1 | 2]/d) | 3 [0-1]) (/d {4} |/d {3} x) $/i;
var stard = "10x98765432"; // номер последней идентификационной карты
var First = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 1-17 коэффициент
var sum = 0;
if (! isidcard2.test (cardid)) {
вернуть ложь;
}
var Year = cardid.substr (6, 4);
var month = cardid.substr (10, 2);
var day = cardid.substr (12, 2);
var birthday = cardid.substr (6, 8);
if (день рождения! = DateToString (новая дата (год+'/'+месяц+'/'+day))) {// проверить, является ли дата законной
вернуть ложь;
}
for (var i = 0; i <cardid.length - 1; i ++) {
sum += cardid [i] * first [i];
}
var result = sum % 11;
var last = stard [result]; // рассчитанный последний идентификационный номер
if (cardid [cardid.length - 1] .touppercase () == последний) {
вернуть истину;
} еще {
вернуть ложь;
}
}
// Дата до строки Дата возврата Формат 2008080808
Функция dateToString (date) {
if (date ancessionof date) {
var year = date.getiflyear ();
var month = date.getmonth () + 1;
месяц = месяц <10? '0' + месяц: месяц;
var day = date.getDate ();
день = день <10? '0' + день: день;
Возвращение года + месяц + день;
}
возвращаться '';
}
// jQuery подтверждает проверку идентификационного номера
jquery.validator.addmethod ("isidcard",
функция (значение, элемент) {
вернуть это.optional (element) || (isidcard (значение));
},
«Номер удостоверения личности является незаконным!»);
</script>
</head>
<тело>
<form id = "form1" method = "get" action = "">
<input type = "text" id = "txtidcard" name = "txtidcard" />
<p>
<input type = "Отправить" value = "pospent" />
</p>
</form>
</body>
</html>
Проверьте с помощью идентификационного номера 53010219200508011x предоставлена на энциклопедии Baidu
Проверка может быть передана, попробуйте изменить x на 0
Если проверка не удается, метод проверки, который мы написали, успешно! Если вы не верите в это, попробуйте использовать свой идентификационный номер. Оказывается, я использовал JS, чтобы проверить идентификационный номер так просто.
Выше приведено в этой статье, надеюсь, вам понравится.