Regex 如何确定给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?
我正在用javascript/jscript编写一个小的windows脚本,用于查找带有字符串的regexp的匹配项,该字符串是我通过操作文件获得的Regex 如何确定给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?,regex,javascript,Regex,Javascript,我正在用javascript/jscript编写一个小的windows脚本,用于查找带有字符串的regexp的匹配项,该字符串是我通过操作文件获得的 文件路径可以是相对路径或绝对路径。如何查找给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?要检查路径是相对路径还是绝对路径,请查找前导的/。 如果没有,则需要将路径连接到基本路径。一些编程环境有一个“当前工作目录”,但浏览器中的Javascript没有,所以您只需要选择一个基本路径并坚持它 function full_path(m
文件路径可以是相对路径或绝对路径。如何查找给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?要检查路径是相对路径还是绝对路径,请查找前导的
/
。
如果没有,则需要将路径连接到基本路径。一些编程环境有一个“当前工作目录”,但浏览器中的Javascript没有,所以您只需要选择一个基本路径并坚持它
function full_path(my_path) {
var base_path = "/home/Sriram/htdocs/media";
var path_regex = /^\/.*$/;
if(path_regex.test(my_path)) {
return my_path;
} else {
return base_path + my_path;
}
}
路径可以包含新行,javascript正则表达式
不会匹配这些新行,因此您可能需要开发更复杂的正则表达式,以确保所有路径都能正常工作。然而,我会认为这超出了这个答案的范围,我的知识。p>
如何确定给定路径是否为绝对/相对路径
从MSDN文章中:
如果文件名不是以下列之一开头,则该文件名相对于当前目录:
- 任何格式的UNC名称,总是以两个反斜杠字符(“\\”)开头。有关更多信息,请参见下一节
- 带有反斜杠的磁盘指示符,例如“C:\”或“d:\”
- 单个反斜杠,例如“\directory”或“\file.txt”。这也称为绝对路径
\
)开始的路径。您可以按如下方式检查此条件:
if (/^\\(?!\\)/.test(path)) {
// path is absolute
}
else {
// path isn't absolute
}
但通常我们所说的绝对路径实际上是指完全限定的路径。在这种情况下,您需要检查所有三个条件,以便区分完整路径和相对路径。例如,您的代码可能如下所示:
function pathIsAbsolute(path)
{
if ( /^[A-Za-z]:\\/.test(path) ) return true;
if ( path.indexOf("\\") == 0 ) return true;
return false;
}
或者(使用单个正则表达式,可读性稍差):
。。。并将其转换为绝对值进行文件操作 使用以下方法:
前导的
/
不是很相关-它指向根。相对路径可以是images/smile.gif
,。/parent.txt
,等等。一切都很正常:他说路径是相对的,如果它不是以/
开头的,那是真的。他不是说他正在为windows编写脚本吗?你如何找到提供的路径是绝对的还是相对的?有什么方法可以通过Windows脚本主机的内置函数实现它吗?这是我的逻辑:如果它有一个“:”,那么它必须是一个绝对路径,因为“:”位于根目录之后。
function pathIsAbsolute(path)
{
return /^(?:[A-Za-z]:)?\\/.test(path);
}
var fso = new ActiveXObject("Scripting.FileSystemObject");
var full_path = fso.GetAbsolutePathName(path);