Javascript 用于查找函数名的正则表达式
我需要在regex的帮助下找到应用于变量的最后一个函数的名称。例如:Javascript 用于查找函数名的正则表达式,javascript,regex,Javascript,Regex,我需要在regex的帮助下找到应用于变量的最后一个函数的名称。例如: aaa.test().other().mainFunction(a.test(),"test"); 正则表达式匹配应将“mainFunction”作为输出 我试过了 /(.*)\.(\w+)\([ ,\w\(\)\.\"]*\)/ 它应该在group2中给出functionName,但是我没有通过上面的讨论 有人能为我推荐一个更好的正则表达式吗?使用解析器 这将产生: aaa.test().something(1, 2).
aaa.test().other().mainFunction(a.test(),"test");
正则表达式匹配应将“mainFunction”作为输出
我试过了
/(.*)\.(\w+)\([ ,\w\(\)\.\"]*\)/
它应该在group2中给出functionName,但是我没有通过上面的讨论
有人能为我推荐一个更好的正则表达式吗?使用解析器
这将产生:
aaa.test().something(1, 2).new(): new
aaa.mainFunction(a(1), b(2)): mainFunction
对于
aaa.test().other().main函数(a.test(),“test”).toString()
,它应该返回什么?如果您试图用正则表达式解析JavaScript,请不要这样做。除非您可以将解析的表达式(语句?)限制在一个非常小的子集内,否则使用正则表达式解析编程语言是一条死胡同。@SabujHassan:它应该给出“toString”@mzedeler:我不是在解析javascript,但是一个定制的脚本语言,我觉得它会引起与您所说的类似的问题,因为语句的复杂性是相似的。还有其他方法吗?唯一的方法是使用真正的解析器。不幸的是,这是在我意识到语言不是JavaScript之前写的(即使这个问题有JavaScript标记)。实际上,我只是在用JS编写代码,而不是为JS编写代码。这看起来像是包含了另一个解析器。难道做一个堆栈、向后迭代行、推和弹出括号不起作用吗?或者其他避免使用其他库的方法?是的,您可以在编写自己的解析器时使用堆栈:-)
aaa.test().something(1, 2).new(): new
aaa.mainFunction(a(1), b(2)): mainFunction