Bang Hu
2025-08-28 a4e7747ec17bdab96b3971dd631df63272aa49be
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import type { RuleType } from 'async-validator'
import { FormItemRule } from 'element-plus'
 
/**
 * 手机号码验证
 * 用于表单验证
 */
export function validatorMobile(rule: any, mobile: string | number, callback: Function) {
  // 允许空值,若需必填请添加多验证规则
  if (!mobile) {
    return callback()
  }
  if (!/^(1[3-9])\d{9}$/.test(mobile.toString())) {
    return callback(new Error('请输入合法有效的手机号'))
  }
  return callback()
}
 
/**
 * 邮箱验证码验证
 * 用于表单验证
 */
export function validatorEmail(rule: any, email: string | number, callback: Function) {
  if (!email) {
    return callback(new Error('邮箱不能为空'))
  }
 
  const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
 
  if (!mailReg.test(email.toString())) {
    return callback(new Error('请输入合法有效的邮箱'))
  }
  return callback()
}
 
/**
 * 昵称/姓名验证
 * 用于表单验证
 */
export function validatorName(rule: any, name: string | number, callback: Function) {
  if (!name) {
    return callback(new Error('姓名不能为空'))
  }
 
  const nameReg = /^[\u4e00-\u9fa5_a-zA-Z]+$/
 
  if (!nameReg.test(name.toString())) {
    return callback(new Error('姓名为2-16位中英文及下划线的组合'))
  }
  return callback()
}
 
 
/**
 * 账户名验证
 */
export function validatorAccount(rule: any, val: string, callback: Function) {
  if (!val) {
    return callback()
  }
  if (!/^[a-zA-Z][a-zA-Z0-9_]{2,15}$/.test(val)) {
    return callback(new Error('请输入用户名'))
  }
  return callback()
}
 
/**
 * 密码验证
 */
export function regularPassword(val: string) {
  // if (/^[a-zA-Z0-9_]{6,32}$/.test(val)) return true
  // 至少8位字母数字的组合,不能为纯数字或者纯字母
  if (/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,}$/.test(val)) return true
  return false
}
export function validatorPassword(rule: any, val: string, callback: Function) {
  if (!val) {
    return callback(new Error('密码不能为空'))
  }
  if (!regularPassword(val)) {
    return callback(new Error('密码格式不正确'))
  }
  return callback()
}
 
/**
 * 验证有1-4位小数的正实数,用于金额的表单验证
 * 用于表单验证
 * */
 
export function validatorMoney(rule: any, val: string, callback: Function) {
  if (!val) {
    return callback()
  }
  // if (!/^[0-9]+(.[0-9]{1,4})?$/.test(val)) { // 保留4位小数
  if (!/(^[1-9]([0-9]\d{0,7})?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/.test(val)) {
    return callback(new Error('数字格式正确(8位整数保留2位小数)'))
  }
  return callback()
}