やりたいこと
- 正規表現でマッチした場所の行番号が知りたい
やり方
下記のようにすればおk。execは、マッチ箇所を全て舐め終わるとnullを返すので便利です。
function getLine(fileContent, matchIndex) {
let indexCount = 0;
let lineNumber = 0;
const lines = fileContent.split('¥n');
for (const line of lines) {
lineNumber++;
indexCount += line.length + 1; // 改行コード分
if (matchIndex < indexCount) { // マッチした場所が見つかった
break;
}
}
return lineNumber;
}
const fileContent = ...;
const reg = /.../g;
const matchData = reg.exec(reg);
const lineNumber = getLine(fileContent, matchData.index);