正则表达式替换javascript中的文件名

时间:2012-11-23 09:44:01

标签: regex

我在使用正则表达式时遇到问题,我有几个文件名需要更改的图像。我亲手完成了。它快速简单,无痛。但是,我想知道我需要做什么作为使用JavaScript的简单替换注册表。那就是它没有完全成功的时候。该图像被称为“muti blossom 02.png”,它将被重新调整大小并保存为名称为“iOS_multi_BLOSSOM_2048.jpg”的JPEG。其他形式相同但名词不同;冬天,叶子,马戏等。

文件名的结构如下:

  • “mutli”在开头(小写),
  • 白色空间,
  • 名词(小写),
  • white-space,
  • 一个数字(可能有一个前面的0,可能是一个或两个数字),
  • 文件扩展名,可能是.png或.psd(小写)。

然后需要更改为:

  • iOS_multi(编写的驼峰案例),
  • 名词(大写),
  • 2048(新的固定尺寸),
  • 新文件扩展名.jpg(小写)。

我知道([az] + \ s)匹配“multi”而且(\ s \ d +。[az] + $)将匹配数字和文件扩展名,但不知道如何成功匹配该位在中间也是。并在名词上做大写。但我确信还有其他人这样做。谢谢。

2 个答案:

答案 0 :(得分:1)

在JavaScript正则表达式中,您无法使用replace执行此操作,因为无法使替换文本大写。但是match方法将返回一个数组,然后您可以对其进行操作。

var oldImageName = "multi blossom 02.png";   
var matches = oldImageName.match(/multi (\w+) \d{1,2}\.(?:png|psd)/);   
var newImageName = "iOS_multi_" + matches[1].toUpperCase() + "_2048.jpg";

注意:这假设“名词”是一个没有空格的单词

答案 1 :(得分:-1)

我正在搜索“javascript Regex来替换Windows在文件名中不接受的字符”,但一无所获, 所以这里是正则表达式从Windows文件名不允许的文件名中删除字符(/ \:?<> |“):

var originalFileName='some filename:with"forbidden/>\? chars.in';
var strippedFileName=originalFileName.replace(/[/\\:?<>|\"]+/g, "")
console.log(strippedFileName);