在javascript中从字符串路径获取文件名?

时间:2012-08-04 03:25:37

标签: javascript regex string

如何从javascript中的string-path获取文件名?

这是我的代码

var nameString = "/app/base/controllers/filename.js"; //this is the input path string

在此处执行操作以仅获取文件名

var name = ???   //this value should equal to filename.js

4 个答案:

答案 0 :(得分:88)

试试这个:

   var nameString = "/app/base/controllers/filename.js";
   var filename = nameString.split("/").pop();

答案 1 :(得分:6)

我不知道你为什么要我们这样做的正则表达式。当然,以下就足够了:

var nameString = "/app/base/controllers/filename.js";
var nameArray = nameString.split('/');
var name = nameArray[nameArray.length - 1];

答案 2 :(得分:0)

纯正则表达式解决方案:\/([^\\\/:*?\"<>|]+)$
你将从第1组获得文件名

答案 3 :(得分:0)

这里是使用正则表达式的一种更详细的解决方案。

替代1(通用)::从字符串路径获取文件名(任何)。

const FILE_NAME_REGEX = /(.+)\/(.+)$/

"/home/username/my-package/my-file1.ts".replace(FILE_NAME_REGEX, '$2')
// > "my-file1.ts"
"/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, '$2')
// > "my-file2.js"

替代2(高级)::仅从字符串路径中获取.ts文件名。

const JS_PATH = "/home/username/my-package/my-file.spec.js"
const TS_PATH = "/home/username/my-package/my-file.spec.ts"

// RegExp accepts only `.ts` file names in lower case with optional dashes and dots
const TS_REGEX = /(.+)\/([a-z.-]+\.(ts))$/

// a. Get only the file name of a `.ts` path
TS_PATH.replace(TS_REGEX, '$2')
// > "my-file.spec.ts"

// b. Otherwise it will return the complete path
JS_PATH.replace(TS_REGEX, '$2')
// > "/home/username/my-package/my-file.spec.js"

注意:此外,您可以首先测试上述正则表达式,以便对其进行验证,然后才能获得期望值。

TS_REGEX.test(TS_PATH)
// > true

TS_REGEX.test(JS_PATH)
// > false

更多信息,请访问MDN - Regular Expressions