JOI如何允许空格和标点符号。

6 浏览
0 Comments

JOI如何允许空格和标点符号。

我想允许Joi在表单的标题字段中允许空格/空白。

明天和Jude共事。

应该被允许,就像这样

早晨散步

目前只有最后一个被验证为真。这是我的joi验证:

const schema = Joi.object().keys({
  title: Joi.string().alphanum().required().max(50),

我添加了正则表达式,但没有结果。

title: Joi.string().alphanum().required().max(50), regex(
  new RegExp('^\w+( +\w+)*$'))

什么是正确的方法?

admin 更改状态以发布 2023年5月21日
0
0 Comments

.alphanum()调整您的检查以忽略空格。此外,当您使用构造函数表示法定义正则表达式时,您使用的是字符串文字,其中反斜杠用于形成字符串转义序列,因此需要加倍以形成正则表达式转义序列。但是,正则表达式字面量表示法更方便。您可以写/\d/而不是写new RegExp('\\d')

因此,您可以使用这个来允许仅有的空格:

title: Joi.string().required().max(50), regex(/^\w+(?:\s+\w+)*$/)

但是,您似乎想不允许逗号并允许所有其他标点符号。

请使用

title: Joi.string().required().max(50), regex(/^\s*\w+(?:[^\w,]+\w+)*[^,\w]*$/)

详细信息

  • ^ - 字符串开始
  • \s* - 0或多个空格(或者使用[^,\w]*匹配0或多个逗号和单词字符之外的字符)
  • \w+ - 1个或多个单词字符(字母、数字或_,如果不想要_,请将其替换为[^\W_]
  • (?:[^\w,]+\w+)* - 零或多个重复
    • [^\w,]+ - 1个或多个逗号和单词字符之外的字符
    • \w+ - 1个或多个单词字符
  • [^,\w]* - 0或多个逗号和单词字符之外的字符
  • $ - 字符串结束。
0