vkj*_*fef 11 javascript regex code-coverage gitlab istanbul
Gitlab CI要求您指定一个正则表达式来提取语句代码覆盖率(以便它们可以显示它).鉴于下面的构建输出(使用jest和istanbul),我已经设法达到:/Statements.*(\d+\%)/
... (other build output)
=============================== Coverage summary ===============================
Statements : 53.07% ( 95/179 )
Branches : 66.67% ( 28/42 )
Functions : 30.99% ( 22/71 )
Lines : 50.96% ( 80/157 )
================================================================================
... (other build output)
Run Code Online (Sandbox Code Playgroud)
这突出了该部分Statements : 53.07%(见这里:http://regexr.com/3e9sl).但是,我只需匹配53.07部分,我该怎么做?
Wik*_*żew 15
我需要只匹配53.07部分,
使用延迟.*?,添加(?:\.\d+)?也匹配浮动,并访问捕获组:
var re = /Statements.*?(\d+(?:\.\d+)?)%/;
var str = '... (other build output)\n=============================== Coverage summary ===============================\nStatements : 53.07% ( 95/179 )\nBranches : 66.67% ( 28/42 )\nFunctions : 30.99% ( 22/71 )\nLines : 50.96% ( 80/157 )\n================================================================================\n... (other build output)';
var res = (m = re.exec(str)) ? m[1] : "";
console.log(res);Run Code Online (Sandbox Code Playgroud)
请注意,Statements.*?(\d+(?:\.\d+)?)%它还允许整数值,而不仅仅是浮点数.
图案说明:
Statements - 一个文字字符串 .*? - 除了空格之外的零个或多个字符,但尽可能少(\d+(?:\.\d+)?)- 第1组(您需要的值将被捕获到该组中)捕获1+位数字和一个可选序列.和1+位数后% - 百分号(如果需要打印,请将其移到上面的括号内)请参阅正则表达式演示.