我有JS代码。
我想找到每个函数的起始位置(通过'{'符号) 如何使用正则表达式找到它?
编辑:我知道不可能100%准确,如何通过正则表达式找到99%的功能? 有没有快速的选择?
答案 0 :(得分:1)
JavaScript不是常规语言,无法使用正则表达式进行解析。如果要准确地解析JavaScript,则需要使用Plain Old Code™。
例如,此代码段会创建一个函数:
function()
{
alert('foo');
}
此代码段调用函数和代码块:
foo.
function()
{
alert('foo');
}
通过简单的正则表达式,这些细微差别是不可能的。
答案 1 :(得分:0)
如果将其制成字符串,则可以使用此解决方案。 我有一个类似的问题,我通过执行此功能来查找功能:
// 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);
该函数返回一个数组,该数组包含找到的每个函数的第一个大括号的索引。
我使此正则表达式与带有参数的每个函数结构或)
和{
之间的空格匹配。
已经很长时间了,但这也许会对其他人有所帮助。