Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | import { z } from 'zod'; export const loginSchema = z.object({ email: z .email('올바른 이메일 형식이 아닙니다.') .max(50, '이메일은 최대 50자까지 입력할 수 있습니다.'), password: z.string().min(1, '비밀번호를 입력해주세요'), }); export const signupSchema = loginSchema .extend({ nickname: z .string() .min(2, '닉네임은 2자 이상이어야 합니다.') .max(14, '닉네임은 14자 이하로 입력해주세요.'), password: z .string() .min(8, '비밀번호는 8자 이상이어야 합니다.') .regex(/[!@#$%^&*]/, '!, @, #, $, %, ^, &, * 중 1개 이상 포함해야 합니다.') .regex(/\d/, '숫자를 1개 이상 포함해야 합니다.'), confirmPassword: z.string().min(1, '확인 비밀번호를 입력해주세요.'), termsAgreement: z .boolean() .refine((v) => v === true, { message: '서비스 이용약관에 동의해주세요.' }), }) .refine((data) => data.password === data.confirmPassword, { path: ['confirmPassword'], message: '비밀번호가 일치하지 않습니다.', }); export type SignupFormValues = z.infer<typeof signupSchema>; |