validate.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // 效验身份证号码
  2. export const isValidIdCard18 = (idCard) => {
  3. // 身份证号码正则表达式(18位)
  4. var regex = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([012]\d)|3[01])\d{3}(\d|X|x)$/
  5. // 校验长度,类型
  6. if (!regex.test(idCard)) {
  7. return false
  8. }
  9. // 提取出生年月日,并验证是否为有效日期
  10. var year = idCard.substring(6, 10)
  11. var month = idCard.substring(10, 12)
  12. var day = idCard.substring(12, 14)
  13. var date = new Date(year, month - 1, day)
  14. if (date.getFullYear() !== parseInt(year, 10) ||
  15. date.getMonth() !== parseInt(month, 10) - 1 ||
  16. date.getDate() !== parseInt(day, 10)) {
  17. return false
  18. }
  19. // 校验码部分
  20. var idCardBase = idCard.substring(0, 17)
  21. var weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  22. var checkCodes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
  23. var sum = 0
  24. for (var i = 0; i < idCardBase.length; i++) {
  25. sum += idCardBase[i] * weights[i]
  26. }
  27. var index = sum % 11
  28. var last = checkCodes[index]
  29. return last.toUpperCase() === idCard.substring(17).toUpperCase()
  30. }
  31. // 身份证号码转换*号
  32. export const maskNumber = (numberStr) => {
  33. if (numberStr.length < 2) {
  34. return numberStr
  35. }
  36. // 提取首尾字符
  37. const firstChar = numberStr[0]
  38. const lastChar = numberStr[numberStr.length - 1]
  39. const middleLength = numberStr.length - 2
  40. const middleStars = '*'.repeat(middleLength)
  41. return firstChar + middleStars + lastChar
  42. }
  43. // 效验手机号
  44. export const phoneReg = /^1[3456789]\d{9}$/
  45. export const checkPhone = (phone) => {
  46. return phoneReg.test(phone)
  47. }
  48. // 效验邮箱
  49. const emailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  50. export const checkEmail = (email) => {
  51. return emailReg.test(email)
  52. }
  53. // 企业邮箱效验
  54. const companyEmailReg = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  55. export const checkCompanyEmail = (email) => {
  56. return companyEmailReg.test(email)
  57. }
  58. // 效验社会统一认证编码
  59. const USCIReg = /^[0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/;
  60. export const checkUSCI = (code) => {
  61. return USCIReg.test(code)
  62. }
  63. // 效验银行卡号
  64. const BankNoReg = /^\d{16,19}$/;
  65. export const checkBankNo = (code) => {
  66. return BankNoReg.test(code)
  67. }
  68. // 效验开户银行名称
  69. const BankNameReg = /^[A-Za-z\u4e00-\u9fa5]+$/;
  70. export const checkBankName = (value) => {
  71. return BankNameReg.test(value)
  72. }
  73. // 效验有效位置地址
  74. const AddressReg = /[\u4e00-\u9fa5]/g;
  75. export const checkAddress = (value) => {
  76. const bool = value ? (value.match(AddressReg)?.length || 0) >= 12 : false // 校验12个中文字符
  77. return bool
  78. }