【问题标题】:Test for empty string in Mongoose regular expression测试 Mongoose 正则表达式中的空字符串
【发布时间】:2012-08-14 09:12:23
【问题描述】:

我发现的一切都表明空字符串可以通过 /^$/ 在正则表达式中匹配。但是,该表达式在我的 Mongoose Validator for zipcode 中不起作用。

如果两个状态之一为真,我想设置邮政编码 - 要么是空的,要么是有效的五位数字。

ZIP_REGEX: /^$|^[0-9]{5}$/
zip: {
    type: Number,
    validate: [ ZIP_REGEX, 'ValidationError']
},

每次我尝试存储空字符串时,此验证器都会失败。结果是我可以设置有效的邮政编码,但从不取消设置。 Mongoose 是否也在尝试验证空字符串是否为数字?正则表达式有错吗?

【问题讨论】:

  • 我发现的一件事是,如果类型是字符串,这可以正常工作。然而,这不是一个很好的解决方案。
  • 空号还能存在吗?如何将空字符串存储为数字类型?如何根据数字类型验证空字符串?
  • 实际上,是的,可以存在一个空数字。这相当于用户说,“我不想与此服务共享我的邮政编码。”

标签: regex mongodb mongoose


【解决方案1】:

对像这样有点不寻常的事情使用自定义验证函数。假设您希望同时支持数字和字符串作为输入:

function validator(v) {
    return (!v && v !== 0) || /^[0-9]{5}$/.test(v.toString());
};

zip: {
    type: Number,
    validate: [validator, 'ValidationError']
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2021-12-22
    • 2012-08-16
    • 2012-06-02
    • 2015-10-21
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多