2012-11-23 58 views
0

我遇到了正則表達式的問題,我有幾個需要更改的文件名的圖像。我手工完成了它們。這是快速容易和無痛。然而,我想知道我需要做什麼來作爲一個簡單的使用JavaScript的替換註冊表。那就是當它沒有完成時。該圖像被稱爲「muti blossom 02.png」,它將被重新調整大小並以JPEG名稱「iOS_multi_BLOSSOM_2048.jpg」保存。其他形式相同,但名詞不同;冬季,葉,馬戲團等正則表達式替換javascript中的文件名

如下文件名的結構:

  • 「輯陣」 在啓動(小寫),
  • 空格,
  • 名詞(低級情況下),
  • 空白,
  • 一個號碼(即可以具有前導0,並且可以是一個或兩個數字),
  • 文件擴展名可以png格式或.PSD(低級案件)。

然後,它需要被改變爲:

  • iOS_multi(如書面駱駝情況下),
  • 名詞(大寫),
  • 2048(新的固定大小),
  • 新文件擴展名.jpg(小寫)。

我知道([az] + \ s)與「multi」匹配,並且(\ s \ d +。[az] + $)會匹配數字和文件擴展名,但不知道如何成功匹配中間的位。並在名詞上做大寫字母。但我確定有其他人會這樣做。謝謝。

回答

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"; 

注:這是假定的「名詞」是不帶空格的

+0

是的,‘名詞’僅僅是一個單詞,沒有空格感謝加里 - 這是一種享受。 –

-1

我搜索「的JavaScript正則表達式,以取代Windows不會在文件名中的字符接受」,但什麼也沒找到一個字, 所以這裏是正則表達式,從文件名剝離字符的Windows filesistem不允許(/ \ :? <> |「):

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