是否可以在 Zod 中链接正则表达式?

Zer*_*dha 6 validation zod

我试图为单个输入字段链接多个正则表达式。尽管它检查了每个正则表达式,但屏幕上仅显示第一个正则表达式的错误消息。是否有可能在 Zod 中链接正则表达式?如果不是,什么是实现相同结果的良好替代解决方案。这是我的代码片段:

export const Schema = z.object({
  fullname: z
    .string()
    .regex(new RegExp(/^[a-zA-Z]+[-'s]?[a-zA-Z ]+$/), 'Name should contain only alphabets')
    .regex(new RegExp(/^[a-zA-Z]+\s+[a-zA-Z]+$/), 'Please enter both firstname and lastname')
    .min(2, 'Name should have atleast 2 alphabets'),
});
Run Code Online (Sandbox Code Playgroud)

每种情况都会显示“名称应仅包含字母”----->

Sam*_*jig 5

我不知道是否可以使用多个.regex说明符,但可以添加多个.refine

export const Schema = z.object({
  fullname: z
    .string()
    .refine((value) => /^[a-zA-Z]+[-'s]?[a-zA-Z ]+$/.test(value), 'Name should contain only alphabets')
    .refine((value) => /^[a-zA-Z]+\s+[a-zA-Z]+$/.text(value), 'Please enter both firstname and lastname')
    .min(2, 'Name should have atleast 2 alphabets'),
});
Run Code Online (Sandbox Code Playgroud)

如果这不起作用,请检查您的正则表达式,您可能将它们弄错了您想要它们执行的操作。