ts_aimz/utils/validator.js

62 lines
1.4 KiB
JavaScript
Raw Permalink Normal View History

2025-03-21 09:02:29 +08:00
// 手机号验证
const isValidPhone = (phone) => {
2025-04-27 18:07:06 +08:00
// 手机号码正则
const mobilePattern = /^1[3-9]\d{9}$/;
// 固定电话正则
const landlinePattern = /^(0\d{2,3})[- ]?\d{7,8}$/;
if (mobilePattern.test(phone)) {
return true
} else if (landlinePattern.test(phone)) {
return true
} else {
return false
}
2025-03-21 09:02:29 +08:00
};
// 邮箱验证
const isValidEmail = (email) => {
return /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(email);
};
// URL验证
const isValidUrl = (url) => {
try {
new URL(url);
return true;
} catch {
return false;
}
};
// 身份证号验证
const isValidIdCard = (idCard) => {
return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(idCard);
};
// 企业统一社会信用代码验证
const isValidCreditCode = (creditCode) => {
return /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/.test(creditCode);
};
const objIsEmpty = (obj) => {
if (obj === undefined) {
return true;
}
if (obj === null) {
return true;
}
return Object.keys(obj).length === 0;
}
2025-03-21 09:02:29 +08:00
// 密码强度验证至少包含数字和字母长度8-20位
const isValidPassword = (password) => {
return /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,20}$/.test(password);
};
module.exports = {
isValidPhone,
isValidEmail,
isValidUrl,
isValidIdCard,
isValidCreditCode,
isValidPassword,
objIsEmpty
2025-03-21 09:02:29 +08:00
};