Nodeの正規表現で後読みができなかったとき
Nodeの正規表現で後読みができなかったとき:
Nodeのバージョンが低く、正規表現の後読みを使用すると上記のエラーが発生してしまいました。
肯定的後読みの場合、検索結果をどう使うかによるかもしれませんが、そのままabc123で検索すればいいと思います。
ただ否定的後読みの場合、なかなか対応が難しかったので、その際の対応を記載したいと思います。
ファイルから文字列を1行ずつ読み出して、前方がある文字列ではない検索文字列があるかどうかをチェックしたかったのです。
(?<!abc)123
つまりは上記みたいに前方がabcではない123があるかどうか。
否定的後読み対象の文字を置換してから検索しました!
これでresultが取得できた場合、abcではない123があるかが判断しています。
Nodeのバージョンが低く、正規表現の後読みを使用すると上記のエラーが発生してしまいました。
let e = new RegExp('(?<!abc)123'); // こうすると以下のエラーが発生 // SyntaxError: Invalid regular expression: /(?<=abc)123/: Invalid group
ただ否定的後読みの場合、なかなか対応が難しかったので、その際の対応を記載したいと思います。
やりたかったこと
ファイルから文字列を1行ずつ読み出して、前方がある文字列ではない検索文字列があるかどうかをチェックしたかったのです。(?<!abc)123
つまりは上記みたいに前方がabcではない123があるかどうか。
どうやったか
否定的後読み対象の文字を置換してから検索しました!let t = text.replace(/abc123/g, ''); let result = t.match(/123/);
コメント
コメントを投稿