零宽:匹配的内容不会保存到匹配结果中(非捕获匹配),只作为匹配结果中的筛选条件。
var str = ./xx/../h/./c/ ;
匹配str的绿色部分;
答:/(?!^(\.{1,2}\/))\.{1,2}\//g
分析:(?!^(\.{1,2}\/)) : ?! 表示(否 | 非 | 不) ,因此,(非./开头 或 不是./开头)
整体表示:前面内容不是./开头的 ./ 或 ../, 因为../h前面是x/. 。./c前面是h/
零宽:匹配的内容不会保存到匹配结果中(非捕获匹配),只作为匹配结果中的筛选条件。
var str = ./xx/../h/./c/ ;
匹配str的绿色部分;
答:/(?!^(\.{1,2}\/))\.{1,2}\//g
分析:(?!^(\.{1,2}\/)) : ?! 表示(否 | 非 | 不) ,因此,(非./开头 或 不是./开头)
整体表示:前面内容不是./开头的 ./ 或 ../, 因为../h前面是x/. 。./c前面是h/