当前位置: 首页 > 知识库问答 >
问题:

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

微生城
2023-03-14

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

明天和裘德一起工作。

也应该被允许

晨间漫步

此时,只有最后一个验证为真。以下是我的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+)*$'))

什么是正确的方式?

共有1个答案

马祺
2023-03-14

alphanum()使您的检查忽略空白。此外,当您使用构造函数符号定义正则表达式时,您使用的是字符串文本,其中反斜杠用于形成字符串转义序列,因此需要加倍以形成正则表达式转义序列。然而,正则表达式文字符号更方便。与其写new RegExp('\\d'),不如写/\d/

因此,您可以使用此选项仅允许空白:

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

但是,您似乎不希望使用逗号,而允许使用所有其他标点符号。

使用

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

详细资料

  • ^-字符串的开头
 类似资料:
  • 我想要一个防止空白的正则表达式,只允许带标点符号的字母和数字(西班牙语)。下面的正则表达式工作得很好,但是它不允许标点符号。 例如,当使用这个正则表达式时,“Hola como estas”是可以的,但是“Hola,como estas?”不匹配。 如何将其调整为标点符号?

  • 从终端创建myDSL语法 起点,包含行列表 每一行都可以选择以LABEL开始,然后以关键字开始 这个语法适用于单引号中有空格的字符串。但是它有很多错误/警告 警告(200):/组织。xtext。实例mydsl/src gen/org/xtext/example/mydsl/parser/antlr/internal/InternalMyDsl。g:309:3:决策可以使用多个选项匹配输入,例如“R

  • 问题内容: URI(特别是HTTP URL)是否允许包含一个或多个空格字符?如果 必须 对URL 进行编码,这是通常遵循的约定还是合法的选择? 特别是,有人可以指向RFC指出 必须 对带有空格的URL 进行编码吗? 提出问题的动机: 在对网站进行Beta测试时,我注意到某些URL的构造带有空格。Firefox似乎做对了,这让我感到惊讶!但是我希望能够将开发人员指向RFC,以便他们觉得有必要修复这些

  • 问题内容: 我正在创建一个使用webpack-dev-server和react-router进行开发的应用程序。 似乎webpack-dev-server是建立在以下假设的基础上的:您将在一个位置拥有一个公共入口点(即“ /”),而react- router允许无限数量的入口点。 我想要webpack-dev-server的好处,特别是对生产力非常有用的热重载功能,但是我仍然希望能够加载react

  • 问题内容: 如何使用T-SQL更改表中的一个属性以允许为null(不为null-> null)?也许更改表? 问题答案: