使用joi + express匹配目录路径的正则表达式

时间:2018-10-22 17:30:10

标签: javascript regex joi

我正在尝试使用joi和express查找正则表达式以匹配目录路径

我的要求是这个

test/upload- Valid
test/upload/123/123/123/ - valid (These can be a nested folder)

我已经尝试了许多通过正则表达式使用joi的方法,但是仍然失败。我还要在屏幕截图中附加测试数据和正则表达式,这是

 /^test?([a-z0-9A-Z ]{1,}\/)+/ //this is defined as pattern 1

如果有人可以帮助我,我将非常感激。我已经盯着这个很久了

这是我的joi字符串

ilepath: Joi.string().regex(pattern1).required(),

enter image description here

2 个答案:

答案 0 :(得分:2)

您的正则表达式通过使用s?来使s可选,并且还将匹配tesing/,其中ing/将在第一个捕获组中,因为([a-z0-9A-Z ]+\/)将匹配直到正斜杠。

如果您只想匹配但不引用捕获组,则可以将其设为非捕获组(?:并重复该操作。

^test\/(?:[A-Z \d]+\/)*$

Regex demo

那将匹配:

  • ^断言字符串的开头
  • test\/匹配测试/
  • (?:非捕获组
    • [A-Z \d]+\/字符类,与大写字符,空格或数字相加1倍以上,后跟正斜杠。使用/i标志来区分大小写
  • )*关闭非捕获组并重复0次以上
  • $声明字符串的结尾

答案 1 :(得分:1)

您要做的就是将对斜线'/'的检查移到捕获组的前面,如下所示:

/^test(\/[a-z0-9A-Z ]{1,})*/

现在它将与'test'和所有子目录匹配。