أقل هراء ، فقط ضع الكود مباشرة ، التحليل في التعليقات واضح للغاية ، لذلك لا يوجد BB هنا.
نسخة الكود كما يلي:
/*
وفقًا لأحكام أرقام هوية المواطنة في المعيار الوطني GB 11643-1999 من جمهورية الصين الشعبية ، فإن رقم هوية المواطنة هو رمز مزيج مميز ، يتكون من رمز الأنطولوجيا الرقمية من رقم سبعة عشر رقماً ورمز التحقق من رقم واحد. أمر الترتيب من اليسار إلى اليمين: رمز العنوان المكون من ستة أرقام ، ورمز الميلاد المكون من ثمانية أرقام ، ورمز التسلسل المكون من ثلاثة أرقام ، ورمز التحقق من رقم واحد.
يمثل رمز العنوان مدونة القسم الإداري للمقاطعة (المدينة ، لافتة ، والمنطقة) حيث يوجد الإقامة الدائمة للكائن المشفر.
يمثل تاريخ ميلاد تاريخ الميلاد العام والشهر واليوم من ولادة الكائن المشفر ، ويتم تمثيل السنة بأربعة أرقام ، ولا يوجد فاصل بين العام والشهر واليوم.
يمثل رمز التسلسل رقم التسلسل المخصص للأشخاص المولودين في نفس العام والشهر واليوم داخل المنطقة التي حددها رمز العنوان نفسه. يتم تعيين الأرقام الفردية لرموز الطلب للرجال ويتم تعيين الأرقام حتى للنساء.
رمز التحقق هو رمز التحقق المحسوب استنادًا إلى رموز رقم سبعة عشر أولًا ووفقًا لرمز التحقق من ISO 7064: 1983.MOD 11-2.
طريقة حساب تاريخ الميلاد.
يوسع رمز بطاقة الهوية الخاص بـ BIT أولاً عام الميلاد إلى 4 بت ، ببساطة إضافة 19 أو 18 ، بما في ذلك جميع الأشخاص المولودين بين عامي 1800 و 1999 ؛
يجب أن يكون أولئك الذين ولدوا بعد العام الجديد 18 ، ولا يوجد مثل هذا القلق. أما بالنسبة لأولئك الذين ولدوا منذ 1800 عام ، يجب ألا يكون هناك رقم هوية في ذلك الوقت ، ⊙⊙B Khan ...
ما يلي هو التعبير العادي:
تاريخ الميلاد 1800-2099 (18 | 19 | 20)؟/D {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/D | 3 [01])
بطاقة معرف بطاقة التعبير العادي/^/d {6} (18 | 19 | 20)؟/d {2} (0 [1-9] | 1 [12]) (0 [1-9] | [12]/d | 3 [01])/d {3} (/d | x) $/i
قواعد التحقق من البت 6 رمز العنوان + مكون من 6 أرقام تاريخ الميلاد + رقم تسلسل 3 أرقام
قواعد التحقق من البت 6 بت رمز العنوان + 8 بت تاريخ الميلاد + رقم تسلسل 3 بت + بت 1 بت التحقق
صيغة قاعدة التحقق من رقم التحقق: ∑ (ai × wi) (MOD 11) ......................................................................................................... .....................................................................................................................................................................................................................................
في الصيغة (1):
يشير I ----- إلى رقم تسلسل الأرقام لحرف الأرقام من اليسار بما في ذلك رمز التحقق ؛
AI ---- يمثل قيمة حرف الرقم في الموضع I-TH ؛
يوضح Wi ----- عامل الترجيح في الموضع I-Th ، ويتم حساب قيمته بناءً على الصيغة Wi = 2^(N-1) (MOD 11).
أنا 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
*/
// التحقق من شرعية رقم الهوية
// دعم أرقام هوية مكونة من 15 رقمًا و 18 رقماً
// ترميز عنوان الدعم وتاريخ الميلاد والتحقق من أرقام التحقق
دالة الهوية codevalid (رمز) {
Var City = {11: "Beijing" ، 12: "Tianjin" ، 13: "Hebei" ، 14: "Shanxi" ، 15: "Inner Mongolia "، 21:" Liaoning "، 22:" Jilin "، 23:" Heilongjiang "، 31:" Shanghai "، 32:" Jiangsu "، 33: "Zhejiang" ، 34: "Anhui" ، 35: "Fujian" ، 36: "Jiangxi" ، 37: "Shandong" ، 41: "Henan" ، 42: "Hubei" 43: "Hunan" ، 44: "Guangdong" ، 45: "Guangxi" ، 46: "Hainan" ، 50: "Chongqing" ، 51: "Sichuan" ، 52: "Guizhou" ، 53: "Yun Nan "، 54:" Tibet "، 61:" Shaanxi "، 62:" Gansu "، 63:" Qinghai "، 64:" Ningxia "، 65:" Xinjiang "، 71:" Taiwan "، 81:" Hong Kong "، 82:" Macao "، 91:" Foreign "} ؛
tip var = "" ؛
var pass = true ؛
if (! code ||!/^/d {6} (18 | 19 | 20)؟/d {2} (0 [1-9] | 1 [12]) (0 [1-9] |
TIP = "خطأ تنسيق رقم بطاقة الهوية" ؛
تمرير = خطأ ؛
}
آخر إذا (! City [code.substr (0،2)]) {
نصيحة = "خطأ ترميز العنوان" ؛
تمرير = خطأ ؛
}
آخر{
// يجب التحقق من بطاقة الهوية المكونة من 18 رقماً
if (code.length == 18) {
الكود = code.split ('') ؛
// ∑ (ai × wi) (mod 11)
// عامل الترجيح
var factor = [7 ، 9 ، 10 ، 5 ، 8 ، 4 ، 2 ، 1 ، 6 ، 3 ، 7 ، 9 ، 10 ، 5 ، 8 ، 4 ، 2] ؛
// بت المعايرة
var parity = [1 ، 0 ، 'x' ، 9 ، 8 ، 7 ، 6 ، 5 ، 4 ، 3 ، 2] ؛
var sum = 0 ؛
var ai = 0 ؛
var wi = 0 ؛
لـ (var i = 0 ؛ i <17 ؛ i ++)
{
AI = رمز [i] ؛
wi = عامل [i] ؛
sum += ai * wi ؛
}
var last = parity [sum ٪ 11] ؛
if (التكافؤ [sum ٪ 11]! = رمز [17]) {
نصيحة = "تحقق من خطأ بت" ؛
تمرير = خطأ ؛
}
}
}
إذا (! تمرير) تنبيه (نصيحة) ؛
عودة تمريرة
}
var c = '130981199312253466' ؛
var res = IdentityCodeValid (c) ؛
ماذا عن ذلك؟ إنه رمز التحقق من رقم هوية أول شامل للغاية. إنه ليس نفس البعد الذي تم البحث فيه عن رموز التحقق الأخرى عبر الإنترنت. يرجى أخذها بعيدًا إذا كنت في حاجة إليها.