عندما نقوم بإنشاء موقع ويب على الإنترنت ، نستخدم غالبًا رقم الهوية لدينا عند تسجيل المعلومات الشخصية. نحتاج إلى التحقق من بطاقة الهوية الخاصة بنا ، وإلا فإن الآخرين سيمررها ببساطة عن طريق إدخال رقم ، مما يجعلك تشعر أن هذا الموقع مصنوع للغاية.
هناك قواعد لرقم الهوية.
الهيكل والشكل
1. هيكل الرقم
رقم المواطنة هو رمز مزيج الميزات ، يتكون من رمز الأنطولوجيا سبعة عشر رقماً ورمز التحقق من رقم واحد. أمر الترتيب من اليسار إلى اليمين: رمز العنوان المكون من ستة أرقام ، ورمز الميلاد المكون من ثمانية أرقام ، ورمز التسلسل المكون من ثلاثة أرقام ، ورمز التحقق من رقم واحد.
2. رمز العنوان
يجب تنفيذ مدونة القسم الإداري للمقاطعة (المدينة ، بانر ، المنطقة) حيث يوجد الإقامة الدائمة لكائن الترميز وفقًا لأحكام GB/T2260.
3. تاريخ الميلاد
إنه يشير إلى سنة وشهر ويوم ولادة الكائن المشفر. يجب تنفيذها وفقًا لأحكام GB/T7408. لا يوجد فاصل بين رموز العام والشهر واليوم.
4. رمز التسلسل
ويشير إلى أنه داخل المنطقة التي تم تحديدها بواسطة رمز العنوان نفسه ، فإن رقم التسلسل المخصص للأشخاص المولودين في نفس العام والشهر واليوم. يتم تعيين العدد الفردي لرمز التسلسل للرجال ويتم تعيين الأرقام حتى للنساء.
5. رمز التحقق
وفقًا للرموز العددية السابعة عشر رقمًا ، فإن رمز التحقق المحسوب وفقًا لرمز التحقق من ISO 7064: 1983.MOD 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-6-7-8-9-10. رقم بطاقة الهوية الأخيرة المقابلة لها هو 1-0-X-9-8-7-6-6-5-4-3-2.
5. من ما سبق ، أنت تعلم أنه إذا كان الباقي 3 ، فسيظهر الرقم الثامن عشر لبطاقة الهوية 9. إذا كان الرقم المقابل هو 2 ، فإن الرقم الأخير من بطاقة الهوية هو الرقم الروماني X.
على سبيل المثال: رقم معرف الرجل هو [53010219200508011x] ، دعنا نرى ما إذا كانت بطاقة الهوية هذه عبارة عن بطاقة هوية قانونية.
أولاً ، نحصل على مجموع منتج أول 17 بت [(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9). 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} |
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) ؛
إذا (عيد ميلاد! = DateToString (تاريخ جديد (السنة + '/' + شهر + '/' + يوم))) {// تحقق مما إذا كان التاريخ قانونيًا
العودة كاذبة
}
لـ (var i = 0 ؛ i <cardid.length - 1 ؛ i ++) {
sum += cardid [i] * أولاً [i] ؛
}
var result = sum ٪ 11 ؛
var last = stard [result] ؛ // تم حساب رقم المعرف الأخير
if (cardid [cardid.length - 1] .ToupperCase () == Last) {
العودة صحيح.
} آخر {
العودة كاذبة
}
}
// تاريخ تنسيق تاريخ إرجاع السلسلة 2008080808
دالة datetostring (التاريخ) {
if (date extryof date) {
var year = date.getlyear () ؛
var month = date.getMonth () + 1 ؛
الشهر = الشهر <10؟ '0' + الشهر: الشهر ؛
var day = date.getDate () ؛
اليوم = اليوم <10؟ '0' + اليوم: اليوم ؛
سنة العودة + الشهر + اليوم ؛
}
يعود ''؛
}
يتم التحقق من فقط بطاقات الهوية المكونة من 18 رقمًا هنا ، ولا يمكن استخدام بطاقات هوية الجيل الأول المكون من 15 رقمًا.
نحن هنا نتحقق أيضًا من شرعية التواريخ ، مثل التواريخ غير القانونية مثل 0230 و 0431 ، ولن يتم تمرير التحقق.
يمكننا أيضًا إضافة هذه الطريقة للتحقق من صحة JQuery لسهولة التحقق.
اكتب طريقة التحقق من صحة JQuery مخصصة
نسخة الكود كما يلي:
// التحقق من رقم المعرف
jquery.validator.addmethod ("Isidcard" ،
دالة (القيمة ، العنصر) {
إرجاع this.optional (عنصر) || (isidcard (القيمة)) ؛
} ،
"رقم بطاقة الهوية غير قانوني!") ؛
دعونا نحصل على عرض تجريبي بسيط لنرى كيف يعمل.
نسخة الكود كما يلي:
<! doctype html>
<html>
<head>
<meta http-equiv = "content-type" content = "text /html ؛ charset = utf-8" />
<title>
التحقق من رقم الهوية
</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"). التحقق من صحة ({
قواعد: {
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} |
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) ؛
إذا (عيد ميلاد! = DateToString (تاريخ جديد (السنة+'/'+شهر+'/'+يوم))) {// تحقق مما إذا كان التاريخ قانونيًا
العودة كاذبة
}
لـ (var i = 0 ؛ i <cardid.length - 1 ؛ i ++) {
sum += cardid [i] * أولاً [i] ؛
}
var result = sum ٪ 11 ؛
var last = stard [result] ؛ // تم حساب رقم المعرف الأخير
if (cardid [cardid.length - 1] .ToupperCase () == Last) {
العودة صحيح.
} آخر {
العودة كاذبة
}
}
// تاريخ تنسيق تاريخ إرجاع السلسلة 2008080808
دالة datetostring (التاريخ) {
if (date extryof date) {
var year = date.getlyear () ؛
var month = date.getMonth () + 1 ؛
الشهر = الشهر <10؟ '0' + الشهر: الشهر ؛
var day = date.getDate () ؛
اليوم = اليوم <10؟ '0' + اليوم: اليوم ؛
سنة العودة + الشهر + اليوم ؛
}
يعود ''؛
}
// jQuery التحقق من صحة رقم الهوية
jquery.validator.addmethod ("Isidcard" ،
دالة (القيمة ، العنصر) {
إرجاع this.optional (عنصر) || (isidcard (القيمة)) ؛
} ،
"رقم بطاقة الهوية غير قانوني!") ؛
</script>
</head>
<body>
<form id = "form1" method = "get" Action = "">
<type type = "text" id = "txtidcard" name = "txtidcard" />
<p>
<type type = "إرسال" value = "إرسال" />
</p>
</form>
</body>
</html>
تحقق من رقم المعرف 53010219200508011x المتوفر على موسوعة BAIDU
يمكن تمرير التحقق ، حاول تغيير x إلى 0
إذا فشل التحقق ، فإن طريقة التحقق التي كتبناها ناجحة! إذا كنت لا تصدق ذلك ، فحاول استخدام رقم الهوية الخاص بك. اتضح أنني استخدمت JS للتحقق من رقم المعرف سهل للغاية.
ما سبق هو كل شيء عن هذا المقال ، أتمنى أن تنال إعجابك.