github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/static_source/admin/src/hooks/web/useValidator.ts (about) 1 import { useI18n } from '@/hooks/web/useI18n' 2 3 const { t } = useI18n() 4 5 type Callback = (error?: string | Error | undefined) => void 6 7 interface LengthRange { 8 min: number 9 max: number 10 message: string 11 } 12 13 export const useValidator = () => { 14 const required = (message?: string) => { 15 return { 16 required: true, 17 message: message || t('common.required') 18 } 19 } 20 21 const lengthRange = (val: any, callback: Callback, options: LengthRange) => { 22 const { min, max, message } = options 23 if (val.length < min || val.length > max) { 24 callback(new Error(message)) 25 } else { 26 callback() 27 } 28 } 29 30 const notSpace = (val: any, callback: Callback, message: string) => { 31 // 用户名不能有空格 32 if (val.indexOf(' ') !== -1) { 33 callback(new Error(message)) 34 } else { 35 callback() 36 } 37 } 38 39 const notSpecialCharacters = (val: any, callback: Callback, message: string) => { 40 // 密码不能是特殊字符 41 if (/[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/gi.test(val)) { 42 callback(new Error(message)) 43 } else { 44 callback() 45 } 46 } 47 48 // 两个字符串是否想等 49 const isEqual = (val1: string, val2: string, callback: Callback, message: string) => { 50 if (val1 === val2) { 51 callback() 52 } else { 53 callback(new Error(message)) 54 } 55 } 56 57 return { 58 required, 59 lengthRange, 60 notSpace, 61 notSpecialCharacters, 62 isEqual 63 } 64 }