LoginSignup
4
4

More than 5 years have passed since last update.

Nodeの正規表現で後読みができなかったとき

Last updated at Posted at 2019-01-16

Nodeのバージョンが低く、正規表現の後読みを使用すると上記のエラーが発生してしまいました。

let e = new RegExp('(?<!abc)123');

// こうすると以下のエラーが発生
// SyntaxError: Invalid regular expression: /(?<!abc)123/: Invalid group

肯定的後読みの場合、検索結果をどう使うかによるかもしれませんが、そのままabc123で検索すればいいと思います。
ただ否定的後読みの場合、なかなか対応が難しかったので、その際の対応を記載したいと思います。

やりたかったこと

ファイルから文字列を1行ずつ読み出して、前方がある文字列ではない検索文字列があるかどうかをチェックしたかったのです。
(?<!abc)123
つまりは上記みたいに前方がabcではない123があるかどうか。

どうやったか

否定的後読み対象の文字を置換してから検索しました!

let t = text.replace(/abc123/g, '');
let result = t.match(/123/);

これでresultが取得できた場合、abcではない123があるかが判断しています。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4