Tau*_*ren 6 javascript regex parsing
我需要从脚本文件中提取整个 javascript 函数。我知道函数的名称,但我不知道函数的内容可能是什么。这个函数可以嵌入到任意数量的闭包中。
我需要有两个输出值:
因此,假设我正在findMe此输入脚本中查找函数:
function() {
function something(x,y) {
if (x == true) {
console.log ("Something says X is true");
// The regex should not find this:
console.log ("function findMe(z) { var a; }");
}
}
function findMe(z) {
if (z == true) {
console.log ("Something says Z is true");
}
}
findMe(true);
something(false,"hello");
}();
Run Code Online (Sandbox Code Playgroud)
由此,我需要以下两个结果值:
提取的findMe脚本
function findMe(z) {
if (z == true) {
console.log ("Something says Z is true");
}
}
Run Code Online (Sandbox Code Playgroud)findMe删除了函数的输入脚本
function() {
function something(x,y) {
if (x == true) {
console.log ("Something says X is true");
// The regex should not find this:
console.log ("function findMe(z) { var a; }");
}
}
findMe(true);
something(false,"hello");
}();
Run Code Online (Sandbox Code Playgroud)我正在处理的问题:
要查找的脚本正文中可以包含任何有效的 javascript 代码。查找此脚本的代码或正则表达式必须能够忽略字符串、多个嵌套块级别等中的值。
如果要查找的函数定义是在字符串内指定的,则应忽略它。
关于如何完成这样的事情的任何建议?
更新:
看起来正则表达式不是执行此操作的正确方法。我对可以帮助我实现这一目标的解析器的指针持开放态度。我在看Jison,但很想听听其他任何事情。
我几乎担心正则表达式无法完成这项工作。我认为这与尝试使用正则表达式解析 XML 或 HTML 是一样的,这个话题已经在这个论坛上引起了各种宗教辩论。
编辑:如果这与尝试解析 XML 不同,请纠正我。