javascript匹配文件名相同然后在后面增加数字的正则表达式
在一个文件列表中
const renameFileName = (fileName: string) => {
console.log("origin file name ", fileName)
let fileList = getFileList() // 获取文件列表,包含了文件名
let count = -1 // 记录当前包含了几个文件名
fileList.forEach(value => {
let fullFileName = value.name ? value.name : value.fileName
// 首先要拿到去掉后缀名的文件名称
let name = fullFileName.indexOf(".") > 0 ? fullFileName.split(".")[0] : fullFileName
console.log("file list name ", name)
if (name === fileName) {
count++
} else {
// 创建正则表达式
let pureName = name.split(".")[0]
// 将去除后缀名的文件名组成一个正则表达式用来匹配输入的文件名是否包含在其中
// 这里\\((\\d+)\\)最里面表示将数字组成一个组合,外面的\\(\\)则是表示要匹配()
const nameRegex = new RegExp(`^${fileName}\\((\\d+)\\)$`)
let matchResult = nameRegex.exec(pureName)
if (matchResult) {
// 文件名包含了数字,将同名文件并且已经包含了(1)这种数字的中间数字取出来
let fileCount = parseInt(matchResult[1])
if (fileCount > count) {
count = fileCount
}
}
}
})
let rename = fileName
if (count >= 0) {
// 重新将文件和重名数字命名组合
rename = `${fileName}(${++count})`
}
return rename
}