替换 Windows '\\' 路径中的文件名

mik*_*eck 1 javascript regex replace

我正在尝试从在 C# 中创建的路径中删除文件名(使用 Server.MapPath,默认情况下使用\\),例如:

C:\\Foo\\Bar\\Baz\\file.js
Run Code Online (Sandbox Code Playgroud)

我当前的正则表达式在RegExr 中看起来有些工作,但在实际应用程序中,它的工作方式正好相反:

\/[^\\]+$
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

oco*_*odo 5

既然你是在 JS 中做这个,就做一个String.split操作。

var path = "C:\\Foo\\Bar\\Baz\\file.js";
var separator = "\\";

function getFilenameFromPath(path, separator){
   var segmented = path.split(separator);
   return segmented[segmented.length-1];
}

console.log(getFilename(path, separator));
Run Code Online (Sandbox Code Playgroud)

正则表达式方式...

顺便说一句,您原来的 RegEx 唯一的错误是领先的 \ 和缺少的 /

 /[^\\]+$/
Run Code Online (Sandbox Code Playgroud)

会钉它。(/g@JDwyers 答案的结尾是使其成为全局匹配,这对于您的用例来说是多余的。)

所以...

path.match(/[^\\]+$/); // == "file.js"
Run Code Online (Sandbox Code Playgroud)

干杯