如何使用正则表达式识别javascript函数
How to identify javascript functions using regex?
我有JS代码。
我想找到每个函数的起始位置(通过"{"号)如何使用regex找到它?
EDIT:我知道不可能100%准确,如何通过regex找到99%的函数?有什么快速的替代方案吗?
JavaScript不是一种正则语言,不能使用正则表达式进行解析。您需要使用Plain Old Code™如果您想准确地解析JavaScript。
例如,这个片段创建了一个函数:
function()
{
alert('foo');
}
而这个片段调用了一个函数和一个代码块:
foo.
function()
{
alert('foo');
}
这些细微差别是用一个简单的正则表达式无法理解的。
如果将其制成字符串,则可以使用此解决方案。我有一个类似的问题,我做了这个函数来找到函数:
// String with some functions to search.
var myStr =
`
foo1(){
var blabla = null;
}
foo2 () {
var blabla = null;
}
foo3(params) {
var blabla = null;
}
foo4(params1,params2) {
var blabla = null;
}
foo5(params1: string, params2: int) {
var blabla = null;
}
`;
// Function to find functions syntax.
function searchForFunctions(str) {
var positionStartFunctions = [];
var functionArr = str.match(/([a-zA-Z0-9]+)'s*'({1}([a-z0-9,:'s]*)'){1}'s*'{/g);
for(var i=0; i<functionArr.length; i++) {
var functionLength = functionArr[i].length;
var functionIndexMatched = str.indexOf(functionArr[i]);
var positionOfCurlyBracket = (functionLength + functionIndexMatched);
positionStartFunctions.push(positionOfCurlyBracket);
}
return positionStartFunctions;
}
var listOfCurlyBracketsFunctions = searchForFunctions(myStr);
console.log(listOfCurlyBracketsFunctions);
该函数返回一个数组,其中包含找到的每个函数的第一个花括号的索引。
我制作了这个正则表达式来匹配每个带有params或)
和{
之间有空格的函数结构。
这已经很长时间了,但也许这会帮助其他人。
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别