先谢谢你的帮助!
我有一些jscripts,如:
var id="001";
var name="Jerry";
...
function f1() {
...
var qid="q1";
...
}
...
var qid="aaabbb";
...
function f2(){
...
var myid="q1";
...
}
...
我想使用正则表达式来获取包含关键字“q1”的函数的名称。有一个简单的方法吗?
答案 0 :(得分:2)
可以在JavaScript中的其他函数中定义函数,因此使用正则表达式来尝试解决此问题是不可能的。对不起: - (
此外,问题尚未明确。在这种情况下你想要什么功能名称?
function outerFunction(x, y) {
var innerFunction = function(z) {
return {
firstProperty: function() {
return "q1";
}
};
};
}
请参阅?声明函数的三种不同方式。你会如何创建一个足够通用的解决方案,以便知道这种情况的“正确”(最相关)函数名称?
答案 1 :(得分:2)
尝试以下方法:
/^function ([^(]*?)\((?=(?:[^\n]|\n[^}])*("q1")).*?^}/ms
请注意,当它位于函数之外时,它与“q1”不匹配,或者内部没有“q1”的函数名称。对于每个匹配,第一组将是功能名称,第二组将是“q1”。
查看实际操作:http://rubular.com/r/xQwro38DUO
以下是解释:
$regex = <<<END
/
^function[ ] # start looking when a line starts with function
([^(]*?)\( # capture the function name into group 1
(?= # start a lookahead
(?:[^\n]|\n[^}])* # consume characters until a line starts with '}'
("q1") # or until we find "q1" (and place it in group 2)
) # end lookahead
.*?^} # consume until end of function (optional)
/msx # m and s flags for consuming multiple line handling
END;
答案 2 :(得分:1)