我正在尝试创建一些 js 来延迟加载 html 文件。所以我必须在 html 注释中创建模式,然后为 js 文件注入(inject)脚本标签。类似于 gulp-inject ,但我自己的方式。
以下是 html 注释示例:
<!--inject:module:js-->
<!--endinject-->
我想识别注释模式并在其中注入(inject)脚本标记,它应该执行以下操作:
<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
<!--endinject-->
这是我迄今为止使用正则表达式尝试过的操作:
/(<!--(inject:?([\w]*?)?:?([\w]*?)?)-->)(<!--endinject-->)*?/gm
它将仅选择第一个“注入(inject)”评论。
<!--inject:module:js-->
PS:我还是正则表达式的新手。
谢谢!
最佳答案
应用于时
<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
<!--endinject-->
这个
(<!--inject:(\w+):(\w+)-->(?:(?!<!--endinject-->)[\s\S])*)(?=<!--endinject-->)
匹配:
第 1 组:
<!--inject:module:js-->
<script src="app/start.module.js"></script>
<script src="app/some.module.js"></script>
<script src="app/content.module.js"></script>
第 2 组和第 3 组包含 module
和js
,分别。
您可以继续将任何匹配项替换为 $1\n<script src="another/script.js"></script>\n
.
这将保留注释结构,因此可以在同一输入上连续使用多次。
关于javascript - REGEX - 在 html 注释模式之间插入内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34695375/