Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用正则表达式';谁是捕获组?_Javascript_Regex - Fatal编程技术网

Javascript 是否可以使用正则表达式';谁是捕获组?

Javascript 是否可以使用正则表达式';谁是捕获组?,javascript,regex,Javascript,Regex,我想知道是否可以使用捕获组剥离javascript JSDoc,我的不起作用 所以我想要这些部分(截图): 截图代码: /** */ 函数emptyMatch(){} /** *这很酷 *惊人的 */ /** *这很酷 * */ 函数coolMatch(){} /** *这是不应该匹配的。 */ 函数noMatch(){} 我想要的结果如下所示: [“这很酷\nAmazing”,“这很酷”]; 我写了一个正则表达式: const re=/\/\*{2}\n(?:(?:[]*\*(?:[](

我想知道是否可以使用捕获组剥离javascript JSDoc,我的不起作用

所以我想要这些部分(截图):

截图代码:

/**
*/
函数emptyMatch(){}
/**
*这很酷
*惊人的
*/
/**
*这很酷
*
*/
函数coolMatch(){}
/**
*这是不应该匹配的。
*/
函数noMatch(){}
我想要的结果如下所示:

[“这很酷\nAmazing”,“这很酷”];
我写了一个正则表达式:

const re=/\/\*{2}\n(?:(?:[]*\*(?:[](.])*)\n)+[]*\*//g;
中的正则表达式如下所示:

现在,当我执行这个正则表达式时,它没有显示我想要的

//语法没有错,请小心语法突出显示。
常量str=`/**
*/
函数emptyMatch(){}
/**
*这很酷
*惊人的
*/
/**
*这很酷
*
*/
函数coolMatch(){}
/**
*这是不应该匹配的。
*/
函数noMatch(){}
`
常量re=/\/\*{2}\n(?:(?:[]*\*(?:[](.*)*))\n)+[]*\*\//g;
行政主管(str)
它只显示一段捕获的字符串

(对不起,我无法将此记录到console.log)


如何实现我的目标?

您需要分别提取注释中的每一行,因为您事先不知道将有多少行。首先匹配每个注释部分,然后按换行符拆分:

const str=`/**
*/
函数emptyMatch(){}
/**
*这很酷
*惊人的
*/
/**
*这很酷
*
*/
函数coolMatch(){}
/**
*这是不应该匹配的。
*/
函数noMatch(){}`;
常量re=/^\/\*{2}\n((?:\*.\n)++?\*\//gm;
让我们比赛;
while(match=re.exec(str)){
常量行=匹配[1]
.split(“\n”)
.map(line=>line.slice(3));//从每一行中删除前导“*”
lines.pop();//最后一个元素是空字符串
控制台日志(行);
}
或,
让rx=/\/\*{2}(\r?\n(?:[\t]*\*(?:[\t]+.*))\r?\n)+[\t]*)\*//g;设matches=[],m;while(m=rx.exec(str)){matches.push(m[1].replace(/^\s*\*\s*/gm',).trim();}