useValidator.ts 1.3 KB

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