register.schema.ts 743 B

1234567891011121314151617181920212223242526
  1. import { z } from 'zod'
  2. export const registerSchema = z.object({
  3. username: z.string()
  4. .min(3, '用户名至少3个字符')
  5. .max(20, '用户名最多20个字符')
  6. .regex(/^[a-zA-Z0-9_]+$/, '用户名只能包含字母、数字和下划线'),
  7. email: z.string()
  8. .optional()
  9. .refine(
  10. (val) => !val || /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(val),
  11. '请输入有效的邮箱地址'
  12. ),
  13. password: z.string()
  14. .min(6, '密码至少6位')
  15. .max(20, '密码最多20位'),
  16. confirmPassword: z.string()
  17. }).refine((data) => data.password === data.confirmPassword, {
  18. message: '两次输入的密码不一致',
  19. path: ['confirmPassword']
  20. })
  21. export type RegisterFormData = z.infer<typeof registerSchema>