如何在动态字符串上使用javascripts replace()

时间:2014-12-22 19:18:05

标签: javascript regex

使用来自api源代码的表达式。无法让它按照他们的方式工作。或者,它没有按照我的预期工作。

//original expression
// returns an anonymous function signature for example 'function(a, b)'
var args = ['a', 'b', 'c'];
    return 'function ' + (args[1] || '').replace('/[\s\r\n]+/', ' ');

//1 - this works
var args = ['a', 'b', 'c'];

var string1 = 'function ' + (args[1] || '');
console.log(string1.replace(/function/, 'fn'));    
// fn b

//2- this.does not(using the api's expression construct)
console.log('function' + (args[1] || '').replace(/function/, 'fn'));  
// function b

问题:为什么替换不在#2中工作?希望得到' fn b'因此在一个表达式中。 myplunk thx

1 个答案:

答案 0 :(得分:4)

在向其添加"function"之前,您正在对字符串运行替换:

(args[1] || '').replace(/function/, 'fn')

你需要添加更多的parens。

('function' + (args[1] || '')).replace(/function/, 'fn')