abbott-methods
Version:
abbott,methods,method,functions,function
35 lines (34 loc) • 1.4 kB
text/typescript
import { formatUsername } from '../format/formatUsername'
import { formatMobile } from '../format/formatMobile'
import { formatEmail } from '../format/formatEmail'
import { typeEmpty } from '../type/typeEmpty'
/**
* @desc 验证是否账号格式
* @param {boolean} required
* @param {String} validateValue
* @param {*} callback
* @param {String} field
* @param {String} [action]
* @param {Number} [min]
* @param {Number} [max]
*/
export const vAccount = (required: boolean, validateValue: string, callback: any, field: string = '用户名', action: string = '填写', min?: number, max?: number): void => {
if (!required && !validateValue) {
callback()
} else {
if (typeEmpty(validateValue)) {
action = action || '填写'
callback(new Error(`${field}必须${action}`))
if (formatMobile(validateValue) || formatEmail(validateValue) || formatUsername(validateValue)) {
if (min && max && (validateValue.length < ~~Math.abs(min) || validateValue.length > ~~Math.abs(max))) {
const howMany = min === max ? String(max) : min + '-' + max
callback(new Error(`${field}的长度为${howMany}个字符`))
} else {
callback()
}
} else {
callback(new Error(`${field}是手机号码、电子邮箱、以字母开头、由字母、数字、减号、点、下划线组成的账号`))
}
}
}
}