Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何确定给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?_Regex_Javascript - Fatal编程技术网

Regex 如何确定给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?

Regex 如何确定给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?,regex,javascript,Regex,Javascript,我正在用javascript/jscript编写一个小的windows脚本,用于查找带有字符串的regexp的匹配项,该字符串是我通过操作文件获得的 文件路径可以是相对路径或绝对路径。如何查找给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?要检查路径是相对路径还是绝对路径,请查找前导的/。 如果没有,则需要将路径连接到基本路径。一些编程环境有一个“当前工作目录”,但浏览器中的Javascript没有,所以您只需要选择一个基本路径并坚持它 function full_path(m

我正在用javascript/jscript编写一个小的windows脚本,用于查找带有字符串的regexp的匹配项,该字符串是我通过操作文件获得的


文件路径可以是相对路径或绝对路径。如何查找给定路径是否为绝对/相对路径,并将其转换为绝对路径以进行文件操作?

要检查路径是相对路径还是绝对路径,请查找前导的
/
。 如果没有,则需要将路径连接到基本路径。一些编程环境有一个“当前工作目录”,但浏览器中的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);