You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 02:19:52