typescript 如何删除Zod中的所有空格?

8i9zcol2  于 6个月前  发布在  TypeScript
关注(0)|答案(3)|浏览(97)

根据Zod的文档,我可以使用trim,但trim只会删除结尾和开头的空白字符。我正在寻找一种方法来删除所有的空白字符。为了给予你一个我使用的设置的想法(删除不相关的代码):

const stp = zodString({
    invalid_type_error: '',
    required_error: '',
}).trim()
    .min(1, { message: '' })
    .max(10, { message: '' })
    .regex(reg, { message: '', });

字符串
有没有一种方法来实现某种修剪,以删除所有的白色空间与zodString?

eoigrqb6

eoigrqb61#

使用管道,您可以首先删除白色空格,然后执行其他验证。

z.string().transform(value => value.replace(/\s+/g, ''))
.pipe(z.string().min(1, { message: 'This field is required' }))

字符串

pgky5nke

pgky5nke2#

您在代码片段中使用的方法.trim()将删除字符串两端的空格。
如果出于某种原因,您希望过滤所有空格,请使用.transform()

z.string().transform(value => value.replaceAll(" ", ""))

字符串

bihw5rsg

bihw5rsg3#

Zod提供了一个refine方法,您可以使用该方法对数据应用自定义验证和转换。在您的情况下,您可以使用此方法从字符串中删除所有空格字符。下面是如何实现此目标的示例:

const stp = zodString({
  invalid_type_error: '',
  required_error: '',
})
  .refine((data) => typeof data === 'string', {
    message: 'Invalid input, not a string',
  })
  .refine(
    (data) => {
      // Remove all whitespace characters
      return data.replace(/\s+/g, '');
    },
    {
      message: 'String contains whitespace characters',
    }
  )
  .min(1, {
    message: 'String is too short',
  })
  .max(10, {
    message: 'String is too long',
  })
  .regex(reg, {
    message: 'String does not match the regex',
  });

字符串
这样,您就可以实现使用Zod删除所有空白字符的预期行为。

相关问题