好吧,我有两个HTML注释是这样的:正则表达式的Javascript - 删除两个HTML之间的文本评论
<!--Delete-->
Blah blah
blah blah
<!--Delete-->
我想删除它(包括评论,任何字符和换行符)。顺便说一句,我正在使用JavaScript和Grunt进行更换。
感谢
好吧,我有两个HTML注释是这样的:正则表达式的Javascript - 删除两个HTML之间的文本评论
<!--Delete-->
Blah blah
blah blah
<!--Delete-->
我想删除它(包括评论,任何字符和换行符)。顺便说一句,我正在使用JavaScript和Grunt进行更换。
感谢
正则表达式
使用下面的JavaScript正则表达式匹配您的自定义的多个实例.html
意见,并在他们里面的内容:如在
/\<\!\-\-Delete\-\-\>((.|[\n|\r|\r\n])*?)\<\!\-\-Delete\-\-\>[\n|\r|\r\n]?(\s+)?/g
然后你Gruntfile.js
内注册自定义Function Task以下要点:
Gruntfile.js
module.exports = function (grunt) {
grunt.initConfig({
// ... Any other Tasks
});
grunt.registerTask('processHtmlComments',
'Remove content from inside the custom delete comments',
function() {
var srcDocPath = './src/index.html', // <-- Define src path to .html
outputDocPath = './dist/index.html',// <-- Define dest path for .html
doc = grunt.file.read(srcDocPath, {encoding: 'utf8'}),
re = /\<\!\-\-Delete\-\-\>((.|[\n|\r|\r\n])*?)\<\!\-\-Delete\-\-\>[\n|\r|\r\n]?(\s+)?/g,
contents = doc.replace(re, '');
grunt.file.write(outputDocPath, contents, {encoding: 'utf8'});
console.log('Created file: ' + outputDocPath);
});
grunt.registerTask('default', [
'processHtmlComments'
]);
};
其他注意事项
目前通过CLI运行$ grunt
执行以下操作:
src
文件夹index.html
文件。<!--Delete-->
中的任何内容,包括评论本身。dist
文件夹写入新的index.html
(不包括不需要的内容)。srcDocPath
和outputDocPath
的值都可能需要根据您的项目要求重新定义。
编辑更新的正则表达式中,也允许联注释使用。例如:
<p>This text remains <!--Delete-->I get deleted<!--Delete-->blah blah</p>
在下面的正则表达式, 我们用一个字请与 \<\!
=>开始逃逸=><!
然后(.)*
任何东西
后 然后跳过第一个标签结束\-\>
然后anythig (.)*
然后在评论结束时\-\-\>
并检查gl obal match g
;
var text="<div>hello there</div><!--Delete-->Blah blahblah blah<!--Delete--><span>Hello world</span>";
var re=/\<\!(.)*\-\>(.)*\-\-\>/g;
console.log(text.replace(re,""));
但一般HTML注释模样
<!--comments blah blah blah //-->
的是,这里是另一个正则表达式
var text = "<span>Hi there</span><div>Hello world</div><!--comments blah blah blah //--><span>something</span>";
var re=/\<\!\-(.)*\/\/\-\-\>/g;
console.log(text.replace(re,""));