如何使用JavaScript正则表达式捕获CSS多行注释块
我正试图用JavaScript正则表达式捕获CSS多行注释块,但我不确定如何在HTML示例中找到结束注释标记而不偶尔得到斜杠,这是一种情况:如何使用JavaScript正则表达式捕获CSS多行注释块,javascript,html,css,regex,node.js,Javascript,Html,Css,Regex,Node.js,我正试图用JavaScript正则表达式捕获CSS多行注释块,但我不确定如何在HTML示例中找到结束注释标记而不偶尔得到斜杠,这是一种情况: /*@comment @title: Buttons @name: block-name @category: Category name > Sub category @description: This is the description of the element @html: &l
/*@comment
@title: Buttons
@name: block-name
@category: Category name > Sub category
@description: This is the description of the element
@html:
<div class="block-name"></div>
*/
/*@注释
@标题:按钮
@名称:块名称
@类别:类别名称>子类别
@描述:这是元素的描述
@html:
*/
我正在尝试使用这个正则表达式,但我得到了结束div标记:
\/\*@注释([^\*\/]){1,}
因此,我尝试添加结束注释标记,但它只是停止工作:
\/\*@注释([^\*/]){1,}\*\/
如何找到JavaScript正则表达式来捕获整个块
请注意,我可以在每个文件中找到多个这些块,因此我将在正则表达式上使用g
标记。请注意,([^\*\/]){1,}
只匹配1个或多个单个字符,而不是*
或/
,而不是作为2个字符的序列
您可以将惰性匹配(*?
量词匹配尽可能少的字符以确保找到匹配)与[^]
或[\s\s]
(匹配任何字符的类,包括换行符):
看
var re=/\/\*@comment[\s\s]*?\*\//g;
var str='/*@comment\n\n@title:Buttons\n@name:block name\n@category:category name>Sub-category\n@description:这是元素的描述\n@html:\n\n\n*/';
var-m;
while((m=re.exec(str))!==null){
如果(m.index==re.lastIndex){
re.lastIndex++;
}
console.log(m[0]);
}
@MaxMastalerz'a/*b*/c/*d*/'.match(/\/\*([^;]*)\*\\//g)
产生[“/*b*/c/*d*/”]
而不是[“/*b*/”,“/*d*/”]
。您也可以将regex版本与一个经过调整的贪婪标记一起使用,但我怀疑您在这里使用它的理由,因为在匹配中没有“禁止”的额外词语。
/\/\*@comment[\s\S]*?\*\//g