Re: [問題] js解析js時,如何有效去註解?

看板Ajax作者 (道可道非常道)時間14年前 (2010/04/02 20:38), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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)

04/06 15:33, , 1F
秘訣是在"同時"RegExp找註解和字串嗎?難怪哪個先找都很怪
04/06 15:33, 1F

04/20 02:51, , 2F
wiki不是在Server端就做好了嗎...我把JS關掉似乎一樣..
04/20 02:51, 2F
文章代碼(AID): #1BjUKtJK (Ajax)
文章代碼(AID): #1BjUKtJK (Ajax)