如何在ZOD中验证字符串不含空格(不使用正则)并自定义提示信息
在Zod中验证字符串不含空格(非正则方法)
你可以借助Zod的refine方法实现这个需求,它支持添加自定义验证逻辑,完全不需要正则表达式。
实现代码
import { z } from "zod"; // 定义验证规则 const noSpaceStringSchema = z.string().refine( // 自定义验证函数:检查字符串是否不包含空格 (inputStr) => !inputStr.includes(' '), { // 自定义错误提示信息 message: '输入的字符串不能包含空格' } ); // 测试示例 // 验证通过的情况 noSpaceStringSchema.parse('testString123'); // 验证失败的情况,会抛出带自定义提示的错误 try { noSpaceStringSchema.parse('test String'); } catch (err) { console.error(err.issues[0].message); // 输出:输入的字符串不能包含空格 }
代码说明
refine方法的第一个参数是验证函数:接收输入的字符串,返回true表示验证通过,false表示验证失败。这里用!inputStr.includes(' ')直接判断字符串是否包含空格。- 第二个参数是配置对象,通过
message字段设置自定义的错误提示信息,当验证失败时会返回这个提示。
如果需要验证所有空白字符(比如制表符、换行符等),可以稍微修改验证函数,不用正则的话可以遍历字符判断:
const noWhitespaceStringSchema = z.string().refine( (inputStr) => { for (const char of inputStr) { // 判断字符是否为空白(trim后为空字符串则说明是空白字符) if (char.trim() === '') { return false; } } return true; }, { message: '输入的字符串不能包含任何空白字符' } );
内容的提问来源于stack exchange,提问作者Kirill Novikov
相关产品推荐
相关产品推荐

