为什么javascript中的slice()和substr()方法对正则表达式不起作用?

时间:2013-02-16 15:25:52

标签: javascript expression 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);

但slice()没有给我任何东西,substr()方法给我一个错误:

Object doesn't support this method

为什么?

2 个答案:

答案 0 :(得分:1)

Fabricio是对的。您的变量s是一个RegExp对象。要访问子字符串,您需要执行以下操作:

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

jsFiddle here

答案 1 :(得分: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);