作者danny0838 (道可道非常道)
看板Ajax
标题Re: [问题] js解析js时,如何有效去注解?
时间Fri Apr 2 20:38:12 2010
※ 引述《zhengyao (yao)》之铭言:
: 解析js的第一步应该是把/* */或// 的注解排除.
: 但是又怕这些符号是在有效字串之中,
: 也不能用引号来判断有效字串(因为也可能在注解之中),
: 变成必须像compiler一样判断整段有效程式码,才能得知是否是有效字串,
: 请问有其他的方法吗?
: 如果变通方法是利用注解的写作习惯,
: 例如不使用此插入注解的方式 var /*注解*/ test;
: 使在解析js时能更快速,
: 不知道大家觉得怎麽样?
真的要写的话,擅用 RegExp 就可以了
String.prototype.removeJSComments = function() {
return this.replace(/(\/\*(?:.|\n|\r\n?)*?\*\/)|(\/\/.*$)|
"(?:[^"]|\\"|\n|\r\n?)*?"|'(?:[^']|\\'|\n|\r\n?)*?'/mg,sub);
function sub(){
return (arguments[1]||arguments[2]) ? '' : arguments[0];
}
}
另一个比较简单的方式是删除所有 /* */ 和 // 区段,
然後字串中不要出现 /* */ //
可反斜线中断,如 "/\*" "*\/" "/\/"
或切成二个字串,如 "/"+"*"
实际上除了 js 注解,
像 <!-- --> 和 <![CDATA[ ]]> 和 <script> </script> 也应该避免出现在字串中,
很容易造成某些程式误判(比方上错色等)
我也想知道有没有办法用简单的纯文字比对抓出所有 <pre class="xxx"> 元素并做处理,
而且还要考虑可能出现的嵌套方式...
看来不用 HTML 或 XML DOM 好像颇难达到....
(wiki 到底怎麽做到的orz...)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.92.12
※ 编辑: danny0838 来自: 114.25.92.12 (04/02 20:53)
1F:推 zhengyao:秘诀是在"同时"RegExp找注解和字串吗?难怪哪个先找都很怪 04/06 15:33
2F:推 j100002ben:wiki不是在Server端就做好了吗...我把JS关掉似乎一样.. 04/20 02:51