2012-09-27 44 views
0

我想寫一個jQuery代碼片段,它將解析包含寬度,高度和擴展名的圖像名稱並將這些值分配給變量。jQuery和RegEX來解析圖像名稱

圖片名稱格式:DSCN0551-130x130.jpg(名稱widthxheight.extension)

我想嘗試和拉我們的寬度,高度和延伸,並將其分配給變量。

+2

http://www.regular-expressions.info/是一個良好的開端。 –

回答

1
var str = 'DSCN0551-130x130.jpg'; 
var matches = str.match(/(.+)-(\d+)x(\d+)\.(\w+)$/); 
var name = matches[1]; 
var width = matches[2]; 
var height = matches[3]; 
var extension = matches[4]; 

通過添加錨點到最後,你基本上可以讀出由右至左正則表達式。然後在與您的結構相關的最左邊的-之後,.+與剩下的任何內容(不管是什麼字符)匹配。

0
var g='DSCN0551-130x130.jpg'.match(/([0-9]+)x([0-9]+)\.([a-z]+)/i) 
//g[1] = width 
//g[2] = height 
//g[3] = ext 

或更好: 如果你只想要第一個匹配找到,你可能需要使用regexp.exec(String)來代替。

var g=/([0-9]+)x([0-9]+)\.([a-z]+)/i.exec('DSCN0551-130x130.jpg') 
//g[1] = width 
//g[2] = height 
//g[3] = ext 
0

使用此:

現場演示:http://jsfiddle.net/oscarj24/dL89D/1/

var imgName = "DSCN0551-130x130.jpg"; 
var args = imgName.match(/(.*)-(.*)x(.*)\.(.*)/).slice(1); 

alert("name: " + args[0] + //name: DSCN0551 
     " width: " + args[1] + //width: 130 
     " height: " + args[2] + //height: 130 
     " extension: " + args[3]);​ //extension: jpg 
+0

如果文件名包含短劃線和x,則可能會中斷。 –

0
var img = "DSCN0-551-130x130.jpg"; 

var props = img.split(/-(\d+)x(\d+)\./); 

var name = props[0]; 
var width = props[1]; 
var height = props[2]; 
var extension = props[3];