Javascript 如果字符串包含“0”,如何使Joi regex()验证失败&引用;(空白)?
我在Node.js中有一个由Joi验证的车辆注册号,需要它拒绝任何包含空格(空格、制表符等)的字符串 我尝试了以下模式,但Joi确实让它通过了: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
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应该实现一个方法来禁止字符串中的特殊字符。