正則獲取檔名,'E:/**/lib/viser-vue/index.js'
阿新 • • 發佈:2019-01-14
'E:/**/lib/viser-vue/index.js'
使用後行斷言匹配 E:/**/lib/viser-vue/,然後進行變數名稱校驗
1、
const filePath = 'E:/**/lib/viser-vue/index.js';
console.log(filePath.match(/.*(?=(\.js)$)/g)); // E:/**/lib/viser-vue/index
2、
const filePath = 'E:/**/lib/viser-vue/index.js'; console.log(filePath.match(/(?>=(.*\/))[_0-9a-zA-Z]+(?=(\.js)$)/g)); // index
3、測試,變數名稱不能以數字開頭
const fileNameReg = /(?<=.*\/)(?<varName>[_$a-zA-Z])+?([0-9\k<varName>]*)(?=\.js$)/g; console.log('E:/**/lib/viser-vue/$index.js'.match(fileNameReg)); console.log('E:/**/lib/viser-vue/012384.js'.match(fileNameReg)); console.log('E:/**/lib/viser-vue/_12aaaa2.js'.match(fileNameReg)); console.log('a12aaaa2.js'.match(fileNameReg));
node是可以使用的,瀏覽器中使用,注:部分瀏覽器不支援後行斷言
// const fileNameReg = /(?<=.*\/)(?<varName>[_$a-zA-Z])+?([0-9\k<varName>]*)(?=\.js$)/g; const fileNameReg = /(?<=.*\/)[_$a-zA-Z]+?([_$a-zA-Z0-9]*)(?=\.js$)/g; console.log('E:/**/lib/viser-vue/$index.js'.match(fileNameReg)); console.log('E:/**/lib/viser-vue/012384.js'.match(fileNameReg)); console.log('E:/**/lib/viser-vue/_12aaaa2.js'.match(fileNameReg)); console.log('a12aaaa2.js'.match(fileNameReg));
console.log(parseVarNameByFilePath('E:/**/lib/viser-vue/$index.js'));
console.log(parseVarNameByFilePath('E:/**/lib/viser-vue/012384.js'));
console.log(parseVarNameByFilePath('E:/**/lib/viser-vue/_12aaaa2.js'));
console.log(parseVarNameByFilePath('/1a12aaaa2.js'));
function parseVarNameByFilePath(path, ext = '.js') {
path = path.split('/');
path = path[path.length - 1];
if (!path.endsWith(ext)) return null;
if (!/[_$a-zA-Z]/.test(path[0])) return null;
return path.slice(0, -ext.length);
}