我发现的所有内容都表明空字符串可以通过/ ^ $ /在正则表达式中匹配。但是,该表达式在我的Mongoose Validator中不适用于zipcode。
如果两个状态中的一个为真,我想设置zipcode - 要么是空的,要么是有效的五位数字。
ZIP_REGEX: /^$|^[0-9]{5}$/
zip: {
type: Number,
validate: [ ZIP_REGEX, 'ValidationError']
},
每次尝试存储空字符串时,此验证程序都会失败。结果是我可以设置有效的邮政编码,但从不取消它们。 Mongoose还试图验证空字符串是否为数字?正则表达式错了吗?
答案 0 :(得分:1)
使用自定义验证功能来处理有点不寻常的事情。假设你想支持数字和字符串作为输入:
function validator(v) {
return (!v && v !== 0) || /^[0-9]{5}$/.test(v.toString());
};
zip: {
type: Number,
validate: [validator, 'ValidationError']
},