正则获取文件名,'E:/**/lib/viser-vue/index.js'

'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);
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值