5

也许我很难(我应该只寻找./and的前缀../)但我不想重新发明轮子并编写一个函数来正确检测相对路径(对于所有平台等)

现有图书馆?

有没有npm这样做的包?果然这个问题已经解决了……

方法?

除了现有的库之外,我的预期方法是使用path模块函数到join已知前缀的可能相对路径,然后看看结果是什么,假设path.join('some_base', possiblyRelative)允许以平台安全的方式实现某种区分特征。

还有其他建议吗?方法?

4

3 回答 3

10

UPDATE2:TomDotTom 在这里找到了更可靠的答案:How to check if a path is absolute or relative

在这里转载(但反过来):

var path = require('path');
function isRelative(p) {
  return path.normalize(p + '/') !== path.normalize(path.resolve(p) + '/');
}

对于节点 v0.12 及更高版本,我建议path.isAbsolute改为。

于 2013-07-08T07:43:24.330 回答
8

这有点晚了,但对于其他搜索同一问题的人来说:

从节点版本 0.12.0 开始,您就拥有了模块中的path.isAbsolute(path) 功能。path要检测您的路径是否是相对的,请使用它的否定:

IE:

var path = require('path');
if( ! path.isAbsolute(myPath)) {
    //...
}
于 2015-05-26T05:58:12.587 回答
0
function isRelative(str)
{
    //Remove quotes as it can potentially mess up the string
    str=str.replace("\'\"",'');
    return str.substring(0,2)=="./"||str.substring(0,3)=="../"; 
}

在这个例子中,我们只允许相对字符串作为字符串路径的开头

于 2014-11-13T18:59:36.397 回答