正则表达式 Javascript - 删除两个 html 评论之间的文本
Regex Javascript - Remove text between two html comments
嗯,我有两个 html 评论是这样的:
<!--Delete-->
Blah blah
blah blah
<!--Delete-->
我想删除它(包括评论、任何字符和换行符)。顺便说一句,我正在使用 javascript 和 Grunt 进行替换。
谢谢
在下面的正则表达式中,
我们检查一个词开头
\<\!
=> 逃脱后 => <!
然后(.)*
任何东西
然后跳过第一个标签结束 \-\>
然后随便 (.)*
然后在评论结尾\-\-\>
并检查全局匹配 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,""));
正则表达式
使用以下 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'
]);
};
补充说明
目前 运行 $ grunt
通过 CLI 执行以下操作:
- 从
src
文件夹中读取名为 index.html
的文件。
- 删除开始和结束自定义评论中的任何内容,
<!--Delete-->
,包括评论本身。
- 向
dist
文件夹写入一个新的 index.html
,不包括不需要的内容。
srcDocPath
和 outputDocPath
的值可能需要根据您的项目要求重新定义。
编辑 更新正则表达式也允许使用内联注释。例如:
<p>This text remains <!--Delete-->I get deleted<!--Delete-->blah blah</p>
嗯,我有两个 html 评论是这样的:
<!--Delete-->
Blah blah
blah blah
<!--Delete-->
我想删除它(包括评论、任何字符和换行符)。顺便说一句,我正在使用 javascript 和 Grunt 进行替换。
谢谢
在下面的正则表达式中,
我们检查一个词开头
\<\!
=> 逃脱后 => <!
然后(.)*
任何东西
然后跳过第一个标签结束 \-\>
然后随便 (.)*
然后在评论结尾\-\-\>
并检查全局匹配 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,""));
正则表达式
使用以下 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'
]);
};
补充说明
目前 运行 $ grunt
通过 CLI 执行以下操作:
- 从
src
文件夹中读取名为index.html
的文件。 - 删除开始和结束自定义评论中的任何内容,
<!--Delete-->
,包括评论本身。 - 向
dist
文件夹写入一个新的index.html
,不包括不需要的内容。
srcDocPath
和 outputDocPath
的值可能需要根据您的项目要求重新定义。
编辑 更新正则表达式也允许使用内联注释。例如:
<p>This text remains <!--Delete-->I get deleted<!--Delete-->blah blah</p>