2017-03-03 82 views
-2

請考慮以下字符串"/path1/path2/file.png"。 是否可以通過正則表達式提取"/path1/path2?如果是的話,你能提供一個例子,它是如何工作的?如果不是將會是什麼替代方案?第三次斜槓後分割字符串

+0

什麼是期望的輸出?它是「/ path1/path2」還是「/file.png」?你能更明確嗎? – JazZ

回答

2

我會做這種方式:

var str = '/path1/path2/file.png'; 

var regex = /(?:\/.*\/)(.*)/; 
var filename = regex.exec(str)[1]; 
console.log(filename); 

的jsfiddle:https://jsfiddle.net/Ldpoqf0n/1/

這是不使用正則表達式的另一種方式:

var parts = str.split('/'); 
console.log(parts[parts.length - 1]); 
+1

嘿嘿,你是唯一一個明白需要輸出文件部分而不是文件夾路徑的人。好球 ! ; ) – JazZ

+0

:)謝謝。希望它有幫助 –

1

let str = '"/path1/path2/file.png"'; 
 

 
console.log(str.replace(/\/\w+.\w+"/, ''));

1

試試這個

const src = '/path1/path2/file.png' 
 

 
const getFirstPart = src => (src.match(/\/.*?\/.*?(?=\/)/) || [])[0] 
 

 
console.log(getFirstPart(src))

1

用正則表達式:

var path = "/path1/path2/file.png"; 
 
var patt = new RegExp("\/.*?\/[^\/]*"); 
 
var subpath = patt.exec(path)[0]; 
 
console.log(subpath)

沒有正則表達式:

function getSubpath(path, subpathLevel) { 
 
    var arr = path.split("/"); 
 
    var subpath = ""; 
 
    for(var i = 0; i < subpathLevel && i < arr.length; i++) 
 
     subpath += "/" + arr[i+1]; 
 
    return subpath; 
 
} 
 
console.log(getSubpath("/path1/path2/file.png", 2));

subpathLevel變量,你可以設置你要考慮斜線的數量(在本例中爲2)。