Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果字符串包含“0”,如何使Joi regex()验证失败&引用;(空白)?_Javascript_Node.js_Joi - Fatal编程技术网

Javascript 如果字符串包含“0”,如何使Joi regex()验证失败&引用;(空白)?

Javascript 如果字符串包含“0”,如何使Joi regex()验证失败&引用;(空白)?,javascript,node.js,joi,Javascript,Node.js,Joi,我在Node.js中有一个由Joi验证的车辆注册号,需要它拒绝任何包含空格(空格、制表符等)的字符串 我尝试了以下模式,但Joi确实让它通过了: const schema = { regNo: Joi.string() .regex(/^.*\S*.*$/) .required() .trim() } 因此,如果我提交“JOI 777”,则认为该字符串有效 我做错了什么? 提前感谢,跳过字符串中的空白,请使用: "hello world".r

我在Node.js中有一个由Joi验证的车辆注册号,需要它拒绝任何包含空格(空格、制表符等)的字符串

我尝试了以下模式,但Joi确实让它通过了:

  const schema = { 
    regNo: Joi.string()
     .regex(/^.*\S*.*$/)
     .required()
     .trim()
    }
因此,如果我提交“JOI 777”,则认为该字符串有效

我做错了什么?
提前感谢,

跳过字符串中的空白,请使用:

"hello world".replace(/\s/g, "");
如果您有多个空间,请使用以下选项:

"this string has more than one space".replace(/ /g, '');
有关更多详细信息,请参见以下链接:

要从字符串中跳过空白,只需使用:

"hello world".replace(/\s/g, "");
如果您有多个空间,请使用以下选项:

"this string has more than one space".replace(/ /g, '');
有关更多详细信息,请参见以下链接:

正则表达式的这部分->
/^.*
表示匹配任何内容,因此正则表达式的其余部分几乎短路

所以您的正则表达式要简单一些,
/^\S+$/

这就意味着,从开始到结束,所有内容都必须是非空白。。还可以看到,这会检查所有内容是否有空格,您还可以取出
.trim()

例如

const测试=[
“Joi 777”,//中间的空间
“JOI777”//我觉得不错
“JOI777”,//起始处的空格
“JOI777”,//末端的空格
“JO\tI77”,//选项卡
“ABC123”//另一个似乎还可以。
“XYZ\n111”//newline
];
tests.forEach(t=>{
console.log(`${!!t.match(/^\S+$/)}”${t}`);

});正则表达式的这部分->
/^.*
表示匹配任何内容,因此正则表达式的其余部分几乎短路

所以您的正则表达式要简单一些,
/^\S+$/

这就意味着,从开始到结束,所有内容都必须是非空白。。还可以看到,这会检查所有内容是否有空格,您还可以取出
.trim()

例如

const测试=[
“Joi 777”,//中间的空间
“JOI777”//我觉得不错
“JOI777”,//起始处的空格
“JOI777”,//末端的空格
“JO\tI77”,//选项卡
“ABC123”//另一个似乎还可以。
“XYZ\n111”//newline
];
tests.forEach(t=>{
console.log(`${!!t.match(/^\S+$/)}”${t}`);

});正则表达式的第一部分将匹配任何内容,。我认为您想要的要简单得多,匹配任何非空白
/^\S+$/
,注意:如果出现空白,它应该失败。您的正则表达式的第一部分将匹配任何内容,。我认为你想要的要简单得多,匹配任何非空白
/^\S+$/
,注意:如果出现空白,它应该会失败。
如果你有多个空格使用此
,你的第一个空格也会删除多个空格,。。你的第二个将只删除空格,而不是制表符/换行符等。tnx对于我现在意识到的提示,这并不能真正回答这个人的问题。他们希望joi拒绝一个值,而不是修改输入值。大家好,谢谢你们的回答。是的,Keith提供的答案在Joi内部发挥了作用。非常感谢大家的关注!这个答案很不相关。他不想删除空白,而是想引发验证错误。这对于密码字段尤其重要。也许Joi应该实现一种方法来禁止字符串中的特殊字符。
如果您有多个空格,请使用此
,您的第一个空格也将删除多个空格,。。你的第二个将只删除空格,而不是制表符/换行符等。tnx对于我现在意识到的提示,这并不能真正回答这个人的问题。他们希望joi拒绝一个值,而不是修改输入值。大家好,谢谢你们的回答。是的,Keith提供的答案在Joi内部发挥了作用。非常感谢大家的关注!这个答案很不相关。他不想删除空白,而是想引发验证错误。这对于密码字段尤其重要。也许Joi应该实现一个方法来禁止字符串中的特殊字符。