JOI如何允许空格和标点符号
JOI how to allow empty spaces and punctuation
我想让 Joi 在表单的标题字段中允许 spaces/whitespaces。
Working tomorrow with Jude.
应该被允许以及
Morningwalk
目前只有最后一个验证为真。这是我的 joi 验证:
const schema = Joi.object().keys({
title: Joi.string().alphanum().required().max(50),
我添加了 Regex 但没有结果。
title: Joi.string().alphanum().required().max(50), regex(
new RegExp('^\w+( +\w+)*$'))
正确的方法是什么?
.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]*$/)
详情
^
- 字符串开头
\s*
- 0 个或更多空格(或者,使用 [^,\w]*
匹配除逗号和单词字符之外的 0 个或更多字符)
\w+
- 1 个或多个单词字符(字母、数字或 _
,如果您不需要 _
,请替换为 [^\W_]
)
(?:[^\w,]+\w+)*
- 零次或多次重复
[^\w,]+
- 除逗号和单词字符外的 1 个或多个字符
\w+
- 1 个或多个单词字符
[^,\w]*
- 除逗号和单词字符外的 0 个或更多字符
$
- 字符串结尾。
我想让 Joi 在表单的标题字段中允许 spaces/whitespaces。
Working tomorrow with Jude.
应该被允许以及
Morningwalk
目前只有最后一个验证为真。这是我的 joi 验证:
const schema = Joi.object().keys({
title: Joi.string().alphanum().required().max(50),
我添加了 Regex 但没有结果。
title: Joi.string().alphanum().required().max(50), regex(
new RegExp('^\w+( +\w+)*$'))
正确的方法是什么?
.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]*$/)
详情
^
- 字符串开头\s*
- 0 个或更多空格(或者,使用[^,\w]*
匹配除逗号和单词字符之外的 0 个或更多字符)\w+
- 1 个或多个单词字符(字母、数字或_
,如果您不需要_
,请替换为[^\W_]
)(?:[^\w,]+\w+)*
- 零次或多次重复[^\w,]+
- 除逗号和单词字符外的 1 个或多个字符\w+
- 1 个或多个单词字符
[^,\w]*
- 除逗号和单词字符外的 0 个或更多字符$
- 字符串结尾。