我有 JS 代码。
我想找到每个函数的开始位置(通过“{”符号)如何使用正则表达式找到它?
编辑:我知道不可能 100% 准确,我怎样才能通过正则表达式找到 99% 的函数?有没有快速的替代方案?
我有 JS 代码。
我想找到每个函数的开始位置(通过“{”符号)如何使用正则表达式找到它?
编辑:我知道不可能 100% 准确,我怎样才能通过正则表达式找到 99% 的函数?有没有快速的替代方案?
JavaScript 不是正则语言,不能使用正则表达式进行解析。如果您想准确解析 JavaScript,则需要使用 Plain Old Code™。
例如,这个片段创建了一个函数:
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);
该函数返回一个数组,其中包含找到的每个函数的第一个大括号的索引。
我使这个正则表达式与每个带有参数或在)
and之间有空格的函数结构相匹配{
。
已经很长时间了,但也许这会对其他人有所帮助。