我正在努力编写一个正则表达式(Objective C)来匹配一个javascript函数。该函数中包含大量代码,但除了文档中的其他函数之外,它是唯一一个调用split,join,slice和reverse的函数。
function aa(b)
{
split()
join()
slice()
reverse()
}
我需要编写一个正则表达式来匹配这个函数。这就是我所拥有的:
// WORKS but matches many other functions.
NSString *functions = @"function\\s\\w{2,2}\\(\\w{1,1}\\)\\{(.*)\\}";
// DOES NOT WORK
NSString *functions = @"function\\s\\w{2,2}\\(\\w{1,1}\\)\\{(.*)split()(.*)join(.*)slice(.*)reverse(.*)\\}";
我只需要找到一个在括号内有拆分,连接,切片和反转的功能,并且无法使其正常工作。
编辑:函数join,split,slice,reserve可以按不同的顺序执行。所以我只需要检测它们是在父函数{}的花括号之间找到的。但他们的顺序可能不同。
我尝试使用环顾四周但没有帮助:
.*\b(slice|split|join)\b.*
也尝试过这样:
(?=.*?\slice\b)(?=.*?\bsplit\b)(?=.*?\bjoin\b).*
你能建议吗?