我需要替换从match();
获得的一些数据这一个返回字符串包含“总时间:9分24秒”
data.match(/Total time: [0-9]* minutes [0-9]* seconds/);
但我只需要“9分24秒”,我尝试使用:
data.match(/Total time: [0-9]* minutes [0-9]* seconds/).replace("Total time:", "");
但是有一个错误“”
".replace is not a function"
有人可以帮助我吗?
答案 0 :(得分:4)
在正则表达式中使用捕获子表达式:
var match = data.match(/Total time: ([0-9]* minutes [0-9]* seconds)/);
alert(match[1]);
match()
会返回一个数组,这就是为什么你无法在结果上调用replace
- 没有Array#replace
方法。
答案 1 :(得分:1)
data = 'Total time: 15 minutes 30 seconds';
response = data.match(/Total time: [0-9]* minutes [0-9]* seconds/);
response = response[0];
alert(response.replace("Total time:", ""));
答案 2 :(得分:1)
你可以摆脱使用匹配做这样的事情......
var match = data.replace(/Total time: ([0-9]* minutes [0-9]* seconds)/,"$1");
答案 3 :(得分:0)
JavaScript将返回匹配数组,如果未找到匹配项,则返回null。原始代码尝试在Array的实例上调用replace
方法,而不是在其中调用元素(String)。
var result = null;
var m = data.match(/.../);
if (m) {
result = m[0].replace('Total time: ', '');
}