正则匹配一个js函数代码?

stanlynet 2012-03-26 04:47:42
用正则如何匹配一个函数的代码,如:
function myfun(){
var var1=10;
var var2="123{456}";
var var3=function(){
var invar1=12;
}
}
如何能正确匹配到函数代码?请教各位。
...全文
311 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
q107770540 2012-03-28
  • 打赏
  • 举报
回复
正则中的平衡组其实就是栈的一种应用

理解了原理,虽然实现起来麻烦些,还是可以自己去写方法来实现这一功能的
嵌套结构,可以划分为三类:
1、起始标志
2、结束标志
3、除此之外的其它子串

记录一个位置,从这个位置开始遍历字符串,最初是从字符串起始位置开始的
遇到起始标志入栈,遇到结束标志出栈,在到达字符结尾或是栈中没有元素时仍要出栈操作时停止,判断匹配是否成功,如果栈不为空,则匹配失败,如果栈为空,则匹配成功
如果上述步骤匹配失败,则从第一个起始标志后开始下一轮匹配,如果上述步骤匹配成功,则从匹配结束位置开始下一轮匹配

http://blog.csdn.net/lxcnn/article/details/4402808
q107770540 2012-03-28
  • 打赏
  • 举报
回复
粗糙点的写法:

/function\b[\s\S]+}/i
q107770540 2012-03-28
  • 打赏
  • 举报
回复
这个需要使用平衡组
但是据我所知 js正则是不支持平衡组的
stanlynet 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chinajiyong 的回复:]
测试数据

HTML code


function myfun(){
var var1=10;
var var2="123{456}";
var var3=function myfun1(){
var invar1=12;
}
var var4=function myfun2(){
var invar2=13;
}
}



正则……
[/Quote]

这个是否只能匹配得到如下位置:
function myfun(){
var var1=10;
var var2="123{456
stanlynet 2012-03-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
正则中的平衡组其实就是栈的一种应用

理解了原理,虽然实现起来麻烦些,还是可以自己去写方法来实现这一功能的
嵌套结构,可以划分为三类:
1、起始标志
2、结束标志
3、除此之外的其它子串

记录一个位置,从这个位置开始遍历字符串,最初是从字符串起始位置开始的
遇到起始标志入栈,遇到结束标志出栈,在到达字符结尾或是栈中没有元素时仍要出栈操作时停止,判断匹配是否成功,如果栈不为空,则……
[/Quote]

谢谢,好的方法!,直接用while遍历好呢,还是正则 也可做到?
EnForGrass 2012-03-26
  • 打赏
  • 举报
回复
测试数据

function myfun(){
var var1=10;
var var2="123{456}";
var var3=function myfun1(){
var invar1=12;
}
var var4=function myfun2(){
var invar2=13;
}
}


正则(?is)function\s*\w*\(\)\{(.*?)\}

还在加载中灬 2012-03-26
  • 打赏
  • 举报
回复
可能存在无限循环嵌套?
stanlynet 2012-03-26
  • 打赏
  • 举报
回复
比如从一个html的js中匹配到所有的函数
如:
function myfun(){
var var1=10;
var var2="123{456}";
var var3=function(){
var invar1=12;
}
}

hp2008001 2012-03-26
  • 打赏
  • 举报
回复
能说详细点么

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧