const regex = /[0-9]+:[0-9]+:?\s*(?:\[?warning\]?|\[?error\]?)|(?:::warning file=|::error file=)/gm;
// Alternative syntax using RegExp constructor
// const regex = new RegExp('[0-9]+:[0-9]+:?\\s*(?:\\[?warning\\]?|\\[?error\\]?)|(?:::warning file=|::error file=)', 'gm')
const str = `PARSABLE
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml:0:1: [warning] missing document start "---" (document-start)
TEST FILES/yaml/yml_bad_1.yml:11:16: error] syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml:10:1: [warning] missing document start "---" (document-start)
TEST FILES/yaml/yml_bad_2.yml:11:1116: [error] syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml_schema/bad/action.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml_schema/bad/action.yml:1:1: [warning] missing document start "---" (document-start)
TEST FILES/yaml_schema/bad/action.yml:2:1: [error] too many blank lines (1 > 0) (empty-lines)
COLORED
[Tap Reporter] Generated TAP report: /tmp/lint/megalinter-reports/tap/mega-linter-YAML_PRETTIER.tap
❌ Linted [YAML] files with [yamllint]: Found 6 error(s) - (1.36s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml
10:1 warning missing document start "---" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml
10:1 warning missing document start "---" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
STANDARD
❌ Linted [YAML] files with [yamllint]: Found 6 error(s) - (1.23s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml
10:1 warning missing document start "---" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml
10:1 warning missing document start "---" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml_schema/bad/action.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml_schema/bad/action.yml
1:1 warning missing document start "---" (document-start)
2:1 error too many blank lines (1 > 0) (empty-lines)
❌ Linted [YAML] files with [yamllint]: Found 3 error(s) - (1.54s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 1 error(s)
--Error detail:
::group::TEST FILES/yaml/yml_bad_1.yml
::warning file=TEST FILES/yaml/yml_bad_1.yml,line=10,col=1::10:1 [document-start] missing document start "---"
::error file=TEST FILES/yaml/yml_bad_1.yml,line=11,col=16::11:16 syntax error: mapping values are not allowed here (syntax)
::endgroup::
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 1 error(s)
--Error detail:
::group::TEST FILES/yaml/yml_bad_2.yml
::warning file=TEST FILES/yaml/yml_bad_2.yml,line=10,col=1::10:1 [document-start] missing document start "---"
Warning: 1:1 [document-start] missing document start "---"
Warning: 13:14 [truthy] truthy value should be one of [false, true]
Warning: 17:14 [truthy] truthy value should be one of [false, true]
Warning: 21:14 [truthy] truthy value should be one of [false, true]
Warning: 25:14 [truthy] truthy value should be one of [false, true]
Warning: 37:14 [truthy] truthy value should be one of [false, true]
Warning: 56:2 [comments] missing starting space in comment
Warning: 57:2 [comments] missing starting space in comment
Warning: 58:2 [comments] missing starting space in comment
Warning: 59:2 [comments] missing starting space in comment
Warning: 60:2 [comments] missing starting space in comment
Error: 77:1 [empty-lines] too many blank lines (3 > 2)
Error: 86:1 [empty-lines] too many blank lines (4 > 2)`;
// Reset `lastIndex` if this regex is defined globally
// regex.lastIndex = 0;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for JavaScript, please visit: https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions