匹配javascript代码中的注释字符串之间的文本

时间:2015-01-02 16:08:12

标签: javascript regex

我试图在某些标签之间删除代码。它来自JavaScript插件,它有多个出现。

例如:

/*<ltIE8>*/                                ╗
if (!item.hasOwnProperty) return false;    ╣ this should match / go away
/*</ltIE8>*/                               ╝
return item instanceof object;             // this should not go away/match
...
/*<ltIE8>*/                                     ╗
if (!window.addEvenetListener) return false;    ╣ this should match / go away
/*</ltIE8>*/                                    ╝
return window.addEvent;

我想匹配/删除这两个块。

尝试使用像\/\*<ltIE8>\*\/(?!=\/\*<\/ltIE8>\*\/)([\s\S]+)之类的前瞻,但最终匹配从第一个发生到最后一个发生,并且缺少中间发生的匹配。

示例:https://regex101.com/r/iD6mL8/1

任何sugestions? (我将使用JavaScript / NodeJS进行这些替换。)

1 个答案:

答案 0 :(得分:0)

我吮吸正则表达式,但这似乎有效:

(\/\*<ltIE8>\*\/)[\s\S]*?(\/\*<\/ltIE8>\*\/)

这个解决方案的关键是?,它告诉正则表达式不要贪婪,这基本上意味着当它找到下一个/*</ltIE8>*/而不是一直到最后一个时停止

Here is a working example