我刚开始使用zod来验证。我已经阅读了文档,但是我可以看到任何关于如何为电话号码添加验证的内容。
我使用电子邮件一,以确保用户输入正确的电子邮件,但我如何做同样的电话号码。
目前的情况如下:
contactNumber: z
.string()
.min(10, { message: 'Must be a valid mobile number' })
.max(14, { message: 'Must be a valid mobile number' }),
我只是不确定这是否正确。我将其设置为字符串,因为我希望用户能够在必要时将+放在数字前面,例如:+27823456787。我不希望用户能够在数字示例: 072r536e98中放置任何字母,如果用户输入字母,我希望收到一条错误消息,说明“必须是一个有效的数字”。
有人能告诉我正确的为什么要做验证吗?
发布于 2022-10-26 07:28:29
您可以使用zod
refinement
将更有能力进行检查的库中的检查链接在一起。正如评论中所提到的那样,这些规则是复杂的,而且是针对该区域的。
例如,validator.js似乎有一个验证,可以使用isMobilePhone
将string
细化为移动电话号码,但是您可能希望/需要让用户指定他们所处的国家。
这将如何运作的一个例子可能是:
import { z } from "zod";
import validator from "validator";
const schema = z.object({
name: z.string(),
phone: z.string().refine(validator.isMobilePhone)
});
console.log(
schema.safeParse({
name: "test",
phone: "+1-212-456-7890"
})
); // Success
console.log(
schema.safeParse({
name: "test",
phone: "2124567890"
})
); // Success
console.log(
schema.safeParse({
name: "test",
phone: "1234"
})
); // Failure
https://stackoverflow.com/questions/74193093
复制相似问题