Reputation: 65147
How to get the filename from string-path in javascript?
Here is my code
var nameString = "/app/base/controllers/filename.js"; //this is the input path string
do something here to get only the filename
var name = ??? //this value should equal to filename.js
Upvotes: 34
Views: 55892
Reputation: 528
Here one more detailed solution using Regular Expressions.
Alternative 1 (generic): Get a file name (whatever) from a string path.
const FILE_NAME_REGEX = /(.+)\/(.+)$/
console.log("/home/username/my-package/my-file1.ts".replace(FILE_NAME_REGEX, '$2'))
console.log("/home/username/my-package/my-file2.js".replace(FILE_NAME_REGEX, '$2'))
Alternative 2 (advanced): Get only a .ts
file name from a string path.
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
console.log(TS_PATH.replace(TS_REGEX, '$2'))
// b. Otherwise it will return the complete path
console.log(JS_PATH.replace(TS_REGEX, '$2'))
Note: Additionally you can test first the regular expressions above in order to validate them before to getting the expected value.
TS_REGEX.test(TS_PATH)
// > true
TS_REGEX.test(JS_PATH)
// > false
More information at MDN - Regular Expressions
Upvotes: 1
Reputation: 672
a pure regex solution: \/([^\\\/:*?\"<>|]+)$
you will get file name from group 1
Upvotes: 0
Reputation: 22697
Try this:
var nameString = "/app/base/controllers/filename.js";
var filename = nameString.split("/").pop();
Upvotes: 121
Reputation: 3494
I don't know why you'd want to us a regex to do this. Surely the following would be sufficient:
var nameString = "/app/base/controllers/filename.js";
var nameArray = nameString.split('/');
var name = nameArray[nameArray.length - 1];
Upvotes: 7