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

Regular expression to match directory paths using joi + express

我正在尝试使用 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(),

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

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

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

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

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

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

Regex demo

那将匹配:

  • ^ 断言字符串的开始
  • test\/匹配测试/
  • (?:非捕获组
    • [A-Z \d]+\/ 字符 class 匹配 1+ 次大写字符,space 或后跟正斜杠的数字。使用 /i 标志匹配不区分大小写的
  • )*关闭非捕获组并重复0+次
  • $ 断言字符串结束