Вы не должны совпадать с \n
, так как это не гарантировано (например, если Name:...
окажется первой строкой вашего текста).Вместо этого используйте флаг m
(многострочный), где ^
соответствует началу строки, как бы то ни было.Точно так же вы можете использовать ?
модификатор "non-жадный", чтобы убедиться, что вы не пересекаете двоеточие, что упрощает использование .
, который не соответствует символам новой строки, избегая необходимости явно защищать их,Окончательный результат:
/^.*?:/gm
Для захвата значения как до, так и после двоеточия:
let str = `
Name: Foo
Name: Bar
Header stuff I don't understand
Name: Quux
`;
let re = /^(.*?):\s*(.*)$/gm
results = [];
while (m = re.exec(str)) {
results.push([m[1], m[2]]);
}
console.log(results);