Javascript正则表达式与JSDoc字符串参数描述匹配

Javascript正则表达式与JSDoc字符串参数描述匹配,javascript,node.js,regex,pcre,Javascript,Node.js,Regex,Pcre,给定一个JSDoc字符串,例如: *\n*这是一个文档字符串\n*@param withArg说明的withArg\n*@param withArg2说明的withArg2\n 我试图在节点8上运行的应用程序中提取参数名称和描述 这个正则表达式:/@param(\s?\w*)(.*)\\n/似乎在正则表达式编辑器中工作。看见 但是当你这样跑的时候: const matchParamsAndDescriptionRegex = /@param(\s?\w*)(.*?)\\n/g; const m

给定一个JSDoc字符串,例如:

*\n*这是一个文档字符串\n*@param withArg说明的withArg\n*@param withArg2说明的withArg2\n

我试图在节点8上运行的应用程序中提取参数名称和描述

这个正则表达式:
/@param(\s?\w*)(.*)\\n/
似乎在正则表达式编辑器中工作。看见

但是当你这样跑的时候:

const matchParamsAndDescriptionRegex = /@param(\s?\w*)(.*?)\\n/g;
const matches = matchParamsAndDescriptionRegex.exec(value);
它返回
null
。你们能发现出什么问题吗


非常感谢

您的原始字符串中必须有规则的LF符号,而不是两个字符序列的
\
n

使用

看到哪里了吗

  • @param
    -匹配
    @param
  • \s*\w*
    -匹配0+个空格,然后匹配0+个单词字符
  • (.*)
    -将任何零个或多个字符捕获到组1中
示例JS演示:

var s=“*\n*这是一个文档字符串\n*@param withArg说明的withArg\n*@param withArg2说明的withArg2\n”
var rx=/@param\s*\w*(.*)/g;
var res=[],m;
while(m=rx.exec){
res.push(m[1].trim());
}

控制台日志(res)
因此,在原始字符串中必须有规则的LF符号,而不是两个字符序列的
\
n
。请在代码()中尝试
/@param\s*\w*(.*)/g
。@WiktorStribiżew谢谢,这确实是个问题。然而,当我尝试你的正则表达式时,我只匹配第一个参数。你有什么建议,使这个工作的所有参数和不同的马车返回样式?我是。我的新帖子是关于获取JS文档的“描述”部分。您的代码可以很好地抓取@params部分
/@param\s*\w*(.*)/g