正则表达式从asp.net Webform中删除HTML注释但保留#include和knockout语句

时间:2017-03-15 12:50:42

标签: c# asp.net regex knockout.js webforms

我想在ASP.Net中缩小asp.net webform页面。 所以在部署之前,我使用了这个很棒的HTMLMinifier.exe 根据此实用程序,它会删除HTML和敲除注释,而不管忽略Knockout注释。它还会从aspx中删除#include文件。

1. <!-- normal html comments -->
2. <!-- ko if:knockoutComments() -->
3. <!-- /ko -->
4. <!-- #include file="" -->

我只需要替换第一个声明。 所有可行的正则表达式和非正则表达式解决方案都受到欢迎。

2 个答案:

答案 0 :(得分:0)

这是一个合适的正则表达式:

<!-- (?!(ko|\/ko|#include)).*? -->

enter image description here

答案 1 :(得分:0)

最好使用knockout源代码在内部使用的正则表达式:

var startCommentRegex = commentNodesHaveTextProperty 
    ? /^<!--\s*ko(?:\s+([\s\S]+))?\s*-->$/ 
    : /^\s*ko(?:\s+([\s\S]+))?\s*$/;
var endCommentRegex =   commentNodesHaveTextProperty 
    ? /^<!--\s*\/ko\s*-->$/ 
    : /^\s*\/ko\s*$/;

你必须将它们重写为你正在使用的其他js-regex语法......

来源:https://github.com/knockout/knockout/blob/master/src/virtualElements.js#L15