Joi 验证正则表达式或模式

Posted

技术标签:

【中文标题】Joi 验证正则表达式或模式【英文标题】:Joi Validation Regex or pattern 【发布时间】:2019-08-03 19:40:06 【问题描述】:

我想使用在变量中定义的正则表达式模式

我有一个包含正则表达式的变量 pattern

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

这个模式发送到 Joi 模块并想要确认

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

如果我使用它,我知道验证工作

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

但就我而言,每次正则表达式都会有所不同。所以我不能使用上面的正则表达式模式

【问题讨论】:

是的,我想使用模式变量 最后一句我改了请再检查一下 【参考方案1】:

如果你想使用模式作为变量,只需传递它:

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

并像这样使用它:

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

【讨论】:

【参考方案2】:
module.exports = (exp) => (
   save: 
       body: 
         match: Joi.string().pattern(new RegExp(exp)).required()
       
   
);

【讨论】:

虽然这段代码可能会解决问题,但一个好的答案还应该解释代码的什么以及它如何提供帮助。

以上是关于Joi 验证正则表达式或模式的主要内容,如果未能解决你的问题,请参考以下文章

js 常用正则表达式表单验证代码

英国邮政编码正则表达式验证

JavaScript邮箱验证-正则验证

JavaScript 邮箱验证 - 正则验证

Regular Expression(正则表达式)之邮箱验证

正则表达式验证地址字符串不包含邮政信箱模式