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

match text between comment string in javascript code

本文关键字:之间 文本 字符串 注释 JavaScript 代码      更新时间:2023-09-26

我正在尝试删除某些标签之间的代码。它来自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

有什么建议吗?(我将使用 JavaScript/NodeJS 进行这些替换)。

'/'*<ltIE8>'*'/(['s'S]+?)(?='/'*<'/ltIE8>'*'/)

试试这个。请参阅演示。

https://www.regex101.com/r/fG5pZ8/18

我对正则表达式很讨厌,但这似乎有效:

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

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

这是一个工作示例