0

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

文件名的结构如下:

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

然后需要将其更改为:

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

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

4

2 回答 2

1

在 JavaScript 正则表达式中,您不能使用 a 来执行此操作,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";

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

于 2012-11-23T11:57:17.670 回答
-1

我正在搜索“javascript Regex to replace characters that Windows doesn't accept in a filename”但什么也没找到,所以这里是 regex 从文件名中删除 windows 文件系统不允许的字符(/\:?<>|“):

var originalFileName='some filename:with"forbidden/>\? chars.in';
var strippedFileName=originalFileName.replace(/[/\\:?<>|\"]+/g, "")
console.log(strippedFileName);
于 2013-08-15T13:41:05.147 回答