Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于查找函数名的正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 用于查找函数名的正则表达式

Javascript 用于查找函数名的正则表达式,javascript,regex,Javascript,Regex,我需要在regex的帮助下找到应用于变量的最后一个函数的名称。例如: aaa.test().other().mainFunction(a.test(),"test"); 正则表达式匹配应将“mainFunction”作为输出 我试过了 /(.*)\.(\w+)\([ ,\w\(\)\.\"]*\)/ 它应该在group2中给出functionName,但是我没有通过上面的讨论 有人能为我推荐一个更好的正则表达式吗?使用解析器 这将产生: aaa.test().something(1, 2).

我需要在regex的帮助下找到应用于变量的最后一个函数的名称。例如:

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