|
@@ -106,4 +106,41 @@ export function addClassToWebViewIframe() {
|
|
|
|
|
|
// 设置超时停止监听(防止内存泄漏)
|
|
|
setTimeout(() => observer.disconnect(), 5000);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证中国大陆身份证号码
|
|
|
+ * @param {string} idCard - 身份证号码
|
|
|
+ * @returns {boolean} - 是否有效
|
|
|
+ */
|
|
|
+ export function validateIdCard(idCard) {
|
|
|
+ // 基本格式验证
|
|
|
+ if (!/^\d{17}[\dXx]$/.test(idCard)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 校验码计算
|
|
|
+ const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
|
|
|
+ const checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
|
|
|
+
|
|
|
+ let sum = 0;
|
|
|
+ for (let i = 0; i < 17; i++) {
|
|
|
+ sum += parseInt(idCard[i]) * factors[i];
|
|
|
+ }
|
|
|
+
|
|
|
+ const mod = sum % 11;
|
|
|
+ const checkCode = checkCodes[mod];
|
|
|
+
|
|
|
+ return idCard[17].toUpperCase() === checkCode;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 验证中国大陆手机号码
|
|
|
+ * @param {string} phone - 手机号码
|
|
|
+ * @returns {boolean} - 是否有效
|
|
|
+ */
|
|
|
+ export function validatePhone(phone) {
|
|
|
+ // 正则表达式验证
|
|
|
+ return /^1[3-9]\d{9}$/.test(phone);
|
|
|
+ }
|