86 lines
2.4 KiB
JavaScript
86 lines
2.4 KiB
JavaScript
// 导入配置
|
||
import config from '@/uni_modules/uni-id-pages/config.js'
|
||
|
||
const {passwordStrength} = config
|
||
|
||
// 密码强度表达式
|
||
const passwordRules = {
|
||
// 密码必须包含大小写字母、数字和特殊符号
|
||
super: /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/])[0-9a-zA-Z~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/]{8,16}$/,
|
||
// 密码必须包含字母、数字和特殊符号
|
||
strong: /^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/])[0-9a-zA-Z~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/]{8,16}$/,
|
||
// 密码必须为字母、数字和特殊符号任意两种的组合
|
||
medium: /^(?![0-9]+$)(?![a-zA-Z]+$)(?![~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/]+$)[0-9a-zA-Z~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/]{8,16}$/,
|
||
// 密码必须包含字母和数字
|
||
weak: /^(?=.*[0-9])(?=.*[a-zA-Z])[0-9a-zA-Z~!@#$%^&*_\-+=`|\\(){}[\]:;"'<>,.?/]{6,16}$/
|
||
}
|
||
|
||
const ERROR = {
|
||
normal: {
|
||
noPwd: '请输入密码',
|
||
noRePwd: '再次输入密码',
|
||
rePwdErr: '两次输入密码不一致'
|
||
},
|
||
passwordStrengthError: {
|
||
super: '密码必须包含大小写字母、数字和特殊符号,密码长度必须在8-16位之间',
|
||
strong: '密码必须包含字母、数字和特殊符号,密码长度必须在8-16位之间',
|
||
medium: '密码必须为字母、数字和特殊符号任意两种的组合,密码长度必须在8-16位之间',
|
||
weak: '密码必须包含字母,密码长度必须在6-16位之间'
|
||
}
|
||
}
|
||
|
||
function validPwd(password) {
|
||
//强度校验
|
||
if (passwordStrength && passwordRules[passwordStrength]) {
|
||
if (!new RegExp(passwordRules[passwordStrength]).test(password)) {
|
||
return ERROR.passwordStrengthError[passwordStrength]
|
||
}
|
||
}
|
||
return true
|
||
}
|
||
|
||
function getPwdRules(pwdName = 'password', rePwdName = 'password2') {
|
||
const rules = {}
|
||
rules[pwdName] = {
|
||
rules: [{
|
||
required: true,
|
||
errorMessage: ERROR.normal.noPwd,
|
||
},
|
||
{
|
||
validateFunction: function(rule, value, data, callback) {
|
||
const checkRes = validPwd(value)
|
||
if (checkRes !== true) {
|
||
callback(checkRes)
|
||
}
|
||
return true
|
||
}
|
||
}
|
||
]
|
||
}
|
||
|
||
if (rePwdName) {
|
||
rules[rePwdName] = {
|
||
rules: [{
|
||
required: true,
|
||
errorMessage: ERROR.normal.noRePwd,
|
||
},
|
||
{
|
||
validateFunction: function(rule, value, data, callback) {
|
||
if (value != data[pwdName]) {
|
||
callback(ERROR.normal.rePwdErr)
|
||
}
|
||
return true
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}
|
||
return rules
|
||
}
|
||
|
||
export default {
|
||
ERROR,
|
||
validPwd,
|
||
getPwdRules
|
||
}
|