1

私が見つけたすべてのことは、空の文字列が /^$/ によって正規表現で一致できることを示しています。ただし、その式は、私の Mongoose Validator for zipcode では機能しません。

2 つの状態のいずれかが true の場合に郵便番号を設定したい - 空であるか、有効な 5 桁の数字である。

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

このバリデーターは、空の文字列を保存しようとするたびに失敗します。その結果、有効な郵便番号を設定できますが、設定を解除することはできません。Mongoose も空の文字列が数値であることを確認しようとしていますか? 正規表現がおかしい?

4

1 に答える 1

1

このような少し変わったものには、カスタム検証関数を使用してください。数値と文字列の両方を入力としてサポートしたい場合:

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

zip: {
    type: Number,
    validate: [validator, 'ValidationError']
},
于 2012-08-14T00:13:20.980 に答える