正则表达式 验证路径问题

新手上路,请多包涵

输入文件路径格式为/ 或者 /a/ 或者 /aa/bb/cc....
1.要求文件夹名称只能由数字字母下划线短横线小数点组成长度在1~20之间
2.因为输入框已有固定的路径前缀 因此允许只输入一个 /
3.允许输入的路径以 / 结束 如 /a/b/ 但路径中不能出现两个连续的 //

阅读 4.9k
2 个回答

看下,testcase应该基本覆盖到你的需求了,如果有没覆盖到的,给一下testStr

const reg = /^(\/|(\/[\w\-\.]{1,20})+\/?)$/;

const testStrs = [
'/',
'',
'/a',
'/a//b',
'/aaaa-bbbb.cccc_dddd/ee/',
'/aaaaabbbbbcccccddddde/ee/',
'//',
'/0000/1111'
];

testStrs.map(s=>reg.test(s)); 
// => [true, false, true, false, true, false, false, true]

分析规则,可以得出路径就是由n个/文件名组成,然后路径结尾需要是/,文件名需要是数字字母下划线短横线小数点组成长度在1~20之间,所以正则可以这么写

/^(\/[\w\-\.]{1,20})*\/$/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题