如何使用RegEx和Fiddler选择和替换整个JavaScript函数

如何使用RegEx和Fiddler选择和替换整个JavaScript函数,javascript,regex,fiddler,Javascript,Regex,Fiddler,我需要用Fiddler重写JavaScript函数。我认为部分解决了这个问题;不过,我仍在搜索正则表达式信息。例如: function traceThis(message) { //setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100); //if (!window.console) console = {}; //console.log(message); } 需要成为

我需要用Fiddler重写JavaScript函数。我认为部分解决了这个问题;不过,我仍在搜索正则表达式信息。例如:

function traceThis(message) {
   //setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   //if (!window.console) console = {};
   //console.log(message);
}
需要成为:

function traceThis(message) {
   setTimeout(function() { window.opener.childWindowMessageHandler(message);}, 100);
   if (!window.console) console = {};
   console.log(message);
}

我认为在traceThis()函数中匹配和替换单独的行会更简单;然而,我认为最有用的是学习如何选择和替换从“函数”到其结束“}”的任何所需函数,而不考虑其中的语句。

函数的源代码可以通过
traceThis.toString()
从那里,您可以进行任何更改,然后使用
新函数重新创建函数

的答案将不起作用,因为toString()函数在脚本实际运行之前不可用。但他确实指出了一种解决这个问题的简单方法,可能不需要JS解析器或复杂的正则表达式

也就是说,只需对以下内容进行直线替换:

function traceThis(message) {


这样,当您的注入器运行时,它会用您想要的脚本代码覆盖旧函数的前面,并将旧函数重命名为其他函数(永远不会被调用)。

这在正则表达式中通常是不可能的,因为JavaScript(或大多数编程语言)不是常规语言(特别是因为您有嵌套结构)。因此,您应该寻找JavaScript解析器。
// Here's my NewFunction
function traceThis(message)
{
   // My new instructions here
}

function OriginalVersionOfTraceThis(message) {