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