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

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

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があるかが判断しています。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2024-02-12 22:08:06 RSSフィード2024-02-12 22:00分まとめ(7件)