正则表达式从没有扩展名的文件名中查找空格和括号

Posted

技术标签:

【中文标题】正则表达式从没有扩展名的文件名中查找空格和括号【英文标题】:Regular Expresion find space and bracket from fileName without extension 【发布时间】:2020-12-21 05:18:25 【问题描述】:

我正在使用 javascript 这是我的字符串

let filename1 = "excluder version(1).pdf"

注意:扩展名将是动态的,例如 jpg 或 png

我想用结果替换字符串 如果使用正则表达式怎么办?

结果或预期:

filename = "excluder-version-1.pdf"

【问题讨论】:

示例:filename1.replace(/\s+/, '-').replace(/\((\d+)\)/, '-$1') 【参考方案1】:

您可以使用正则表达式 [^a-z0-9]+ ,它将用空格替换除数字和小字母之外的所有元素。 您也可以使用子字符串获取扩展名,然后将其添加到最终结果中。

let filename1 = "excluder version(1).pdf"
var extension = filename1.substring(filename1.indexOf('.')+1)
var filename = filename1.substring(0,filename1.indexOf('.'))
filename=filename.replace(/[^a-z0-9]+/g," ").trim().split(" ").join("-")+"."+extension;

console.log(filename)

【讨论】:

【参考方案2】:

你可以试试!

let filename1 = "excluder version(1).pdf"
let re = /(\w+)\s(\w+)\((\d+)\)\.(pdf|jpg|png)/;


const matches = filename1.match(re).slice(1);
const newstr = matches.reduce((acc, curr, index) => 
  if (index === matches.length - 1) 
    return acc + '.' + curr;
  
  return acc + '-' + curr;
);

console.log(newstr);

【讨论】:

以上是关于正则表达式从没有扩展名的文件名中查找空格和括号的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式(括号)[中括号]{大括号}的区别小结

正则表达式表示空格或者换行