var reg = /("([^"]*(.)?)*")|('([^']*(.)?)*')|(/{2,}.*?(r|n))|(/*(n|.)*?*/)/g, // 正則表達式 str = $('event').html(); // 欲處理的文本 console.log(str); // 打印出:原文本 console.log(str.match(reg));// 打印出:匹配子串 str.replace(reg, function(word) { // 去除注釋後的文本 return /^/{2,}/.test(word) || /^/*/.test(word) ? "" : word; });
這個正則表達式,擁有4個子表達式:前兩個是用來捕獲" "和' '字符串,後兩個分別用來選取和/* */注釋。
最需要注意的是第4個子表達式:
(/{2,}.*?(r|n))|(/*(n|.)*?*/)
後面那個?號很關鍵,這個必須要用懶惰匹配,不然不能避免下圖中的“干擾項2”。