JOI如何允许空格和标点符号。
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日
.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或多个逗号和单词字符之外的字符$
- 字符串结束。