Javascript JOI如何允许空格和标点符号
我想允许Joi在表单的标题字段中允许空格/空白 明天和裘德一起工作 也应该被允许 晨间漫步 此时,只有最后一个验证为真。以下是我的joi验证:Javascript JOI如何允许空格和标点符号,javascript,node.js,regex,vue.js,joi,Javascript,Node.js,Regex,Vue.js,Joi,我想允许Joi在表单的标题字段中允许空格/空白 明天和裘德一起工作 也应该被允许 晨间漫步 此时,只有最后一个验证为真。以下是我的joi验证: const schema=Joi.object().keys({ 标题:Joi.string().alphanum().required().max(50),The.alphanum()使您的检查忽略空白。此外,当您使用构造函数表示法定义正则表达式时,您使用的是字符串文字,其中反斜杠用于形成字符串转义序列,因此需要加倍以形成正则表达式转义序列。但是,正
const schema=Joi.object().keys({
标题:Joi.string().alphanum().required().max(50),
The.alphanum()
使您的检查忽略空白。此外,当您使用构造函数表示法定义正则表达式时,您使用的是字符串文字,其中反斜杠用于形成字符串转义序列,因此需要加倍以形成正则表达式转义序列。但是,正则表达式文字表示法更方便。而不是编写新的正则表达式('\\d')
你要写/\d/
因此,您可以使用此选项仅允许空白:
title: Joi.string().required().max(50), regex(/^\w+(?:\s+\w+)*$/)
但是,您似乎不希望使用逗号,而允许使用所有其他标点符号
使用
详细信息
-字符串的开头^
-0个或多个空格(或者,使用\s*
匹配0个或多个字符,而不是逗号和单词字符)[^,\w]*
-1个或多个单词字符(字母、数字或\w+
,如果您不需要
,请替换为
)[^\w\u]
-零次或多次重复(?:[^\w,]+\w+*
-1个或多个字符,逗号和单词字符除外[^\w,]+
-1个或多个单词字符\w+
-0个或更多字符,逗号和单词字符除外[^,\w]*
-字符串结束$
新的RegExp('^\w+(++\w+*$')
替换为/^\w+(++\w+*$/
?仍然不允许空格,您可能需要删除.alphanum()
工作。现在只向regex添加标点符号。Cheerso,您的意思是/^\w+(?:\w+\w+)*$/
?我们就快到了。标点符号仍然不起作用。@Tichel您还没有询问标点符号。您应该用您想要匹配的标点符号更新问题。添加有效/无效的大小写。@Tichel所以,/^\w+(?:\w+\w+)*$/
按预期工作?@Tichel我看到您也更新了示例。但现在,我不太明白您的意图是什么:什么是不允许的?对您有效的模式是/^\W*\W+(?:\W+\W+*\W*$/
,请参见。是否要禁止空字符串并匹配任何非空/非空字符串?Wiktor,逗号(,)现在允许。一个点(.)不允许。我正在处理它。
title: Joi.string().required().max(50), regex(/^\s*\w+(?:[^\w,]+\w+)*[^,\w]*$/)