javascript中的Regex替换文件名
我在使用正则表达式时遇到问题,我有几个文件名为的图像需要更改。我是手工做的。这很快,很容易,也没有痛苦。然而,我想知道作为一个使用JavaScript的简单替换reg ex需要做什么。而那就是它不太起作用的时候。该图像名为“muti blossom 02.png”,它将被重新调整大小并保存为名为“iOS_multi_blossom_2048.jpg”的JPEG格式。其他的是相同的形式,但有不同的名词;冬天、树叶、马戏团等 文件名的结构如下所示:javascript中的Regex替换文件名,regex,Regex,我在使用正则表达式时遇到问题,我有几个文件名为的图像需要更改。我是手工做的。这很快,很容易,也没有痛苦。然而,我想知道作为一个使用JavaScript的简单替换reg ex需要做什么。而那就是它不太起作用的时候。该图像名为“muti blossom 02.png”,它将被重新调整大小并保存为名为“iOS_multi_blossom_2048.jpg”的JPEG格式。其他的是相同的形式,但有不同的名词;冬天、树叶、马戏团等 文件名的结构如下所示: 开始时的“mutli”(小写) 空白处 名词(小
- 开始时的“mutli”(小写)
- 空白处
- 名词(小写)
- 空白处
- 一个数字(前面可能有一个0,可能是一个或两个数字)
- 文件扩展名可以是.png或.psd(小写)
- iOS_multi(如书面所示为驼峰式)
- 名词(大写)
- 2048(新的固定尺寸)
- 新文件扩展名.jpg(小写)
我知道([AZ++S)匹配“多”,并且(\\D+[[ZZ] +$)将匹配数字和文件扩展名,但不知道如何成功地匹配中间的位。对名词用大写字母。但我肯定还有其他人会这么做。谢谢。
在JavaScript正则表达式中,您不能使用替换来完成此操作,因为替换文本不能大写。但是,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";
注意:这假设“名词”是一个没有空格的单词,我正在搜索“javascript正则表达式以替换Windows在文件名中不接受的字符”,但没有找到任何内容,
因此,这里有一个正则表达式,用于从文件名中删除windows filesistem不允许的字符(/\:?|“):
var originalFileName='some filename:带有“禁止的”/>\?chars.in';
var strippedFileName=originalFileName.replace(/[/\\:?\\“]+/g,”)
log(strippedFileName);
是的,“名词”只是一个没有空格的单词。谢谢garyh-这很有用。
var originalFileName='some filename:with"forbidden/>\? chars.in';
var strippedFileName=originalFileName.replace(/[/\\:?<>|\"]+/g, "")
console.log(strippedFileName);