Joi Validation Regex or pattern

Imran Rafiq picture Imran Rafiq · Mar 13, 2019 · Viewed 9.7k times · Source

I want to joi use regex pattern which define in variable

I have a variable pattern which contains regex i.e

pattern = "/^[0-9+]{7}-[0-9+]{1}$/"

and this pattern send to Joi module and want to confirm

module.exports = {
    save: {
        body: {
          match: Joi.string().regex(pattern).required
        }
     }
 }

I know validation work if I use this

module.exports = {
        save: {
            body: {
              match: Joi.string().regex(/^[0-9+]{7}-[0-9+]{1}$/).required
            }
         }
     }

But in my case every time regex will different. So I can not use above regex pattern

Answer

Victor P. picture Victor P. · Mar 13, 2019

If you want to use pattern as variable, just pass it:

module.exports = (pattern) => ({
  save: {
    body: {
      match: Joi.string().regex(pattern).required
    }
  }
});

And use it like:

const pattern = "/^[0-9+]{7}-[0-9+]{1}$/";
validator(pattern)