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”。