Javascript 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()使您的检查忽略空白。此外,当您使用构造函数表示法定义正则表达式时,您使用的是字符串文字,其中反斜杠用于形成字符串转义序列,因此需要加倍以形成正则表达式转义序列。但是,正

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

明天和裘德一起工作

也应该被允许

晨间漫步

此时,只有最后一个验证为真。以下是我的joi验证:

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+)*$/)
但是,您似乎不希望使用逗号,而允许使用所有其他标点符号

使用

详细信息

  • ^
    -字符串的开头
  • \s*
    -0个或多个空格(或者,使用
    [^,\w]*
    匹配0个或多个字符,而不是逗号和单词字符)
  • \w+
    -1个或多个单词字符(字母、数字或
    ,如果您不需要
    ,请替换为
    [^\w\u]
  • (?:[^\w,]+\w+*
    -零次或多次重复
    • [^\w,]+
      -1个或多个字符,逗号和单词字符除外
    • \w+
      -1个或多个单词字符
  • [^,\w]*
    -0个或更多字符,逗号和单词字符除外
  • $
    -字符串结束

如果您将
新的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]*$/)