日期:2014-05-16  浏览次数:20315 次

正则匹配一个js函数代码?
用正则如何匹配一个函数的代码,如:
function myfun(){
  var var1=10;
  var var2="123{456}";
  var var3=function(){
  var invar1=12;
  }
}
如何能正确匹配到函数代码?请教各位。

------解决方案--------------------
能说详细点么
------解决方案--------------------
可能存在无限循环嵌套?
------解决方案--------------------
测试数据
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;
 }
}

------解决方案--------------------
正则中的平衡组其实就是栈的一种应用

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

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

http://blog.csdn.net/lxcnn/article/details/4402808