2013-02-16 17 views
3

我的代碼是:爲什麼JavaScript中的slice()和substr()方法在正則表達式上不起作用?

var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p"; 
var patt=/myfile.[\W|\w]*.mp3\s/; 
var s=patt.exec(st); 
var s2=s.slice(3,4); 
alert(s2); 

但切片()給我什麼和SUBSTR()方法給我一個錯誤:

Object doesn't support this method

爲什麼?

+1

'.exec'返回一個對象。你的預期輸出是什麼? – 2013-02-16 15:29:27

+0

@FabrícioMatté耶! '.exec()'方法 – 2013-02-16 15:32:08

+0

我的預期輸出是一個字符串。我如何轉換它? – 2013-02-16 15:37:26

回答

1

Fabricio是正確的。您的變量s是RegExp對象。要訪問子,你需要做的:

var s2 = s[0].substr(3,4); 

jsFiddle here

+1

關於「切片」和字符串的說法不正確http://jsfiddle.net/fNX27/ – charlietfl 2013-02-16 15:48:24

+0

是的,你是對的 - 我的錯誤 – hohner 2013-02-16 15:50:17

0

slice: slice()方法返回數組中選定的元素作爲新的數組對象。

substring: substring()方法從兩個指定索引之間的字符串中提取字符,並返回新的子字符串。

var st="man myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 ou p"; 
var patt=/myfile.[\W|\w]*.mp3\s/; 
var s=patt.exec(st); 

s現在是數組,它包含:["myfile=l/p/nm.mp3 yourfile=/o/mj/nnc.mp3 "]

var s2=s.slice(3,4); 

3不存在,所以它返回null

關於substring它不能在陣列中使用:)你還是你必須做這樣的事情:

var s2=s[0].substring(3,4); 
相關問題