1. ホーム
  2. javascript

[解決済み] Chromeでは動作するが、Safariでは壊れる。Invalid regular expression: 無効なグループ指定名 /(?<=\/)([^#]+)(?=#*)/ です。

2023-06-15 06:22:41

質問

私のJavascriptのコードでは、以下の正規表現があります。 /(?<=\/)([^#]+)(?=#*)/ は、Chromeでは正常に動作しますが、サファリでは、私は取得します。

無効な正規表現: 無効なグループ指定子名

何か思い当たることはありますか?

どのように解決するのですか?

Safariのように見える はまだ lookbehind をサポートしていないようです。 をサポートしていないようです (つまり、あなたの (?<=\/) ). もう一つの方法は / を非捕捉グループに入れ、最初のグループだけを取り出す。 / の前、そして # ).

/(?:\/)([^#]+)(?=#*)/

また (?=#*) はおかしいです。 何か (例えば # や文字列の末尾など)ではなく * という量詞( ゼロ またはそれ以上の頻度で # ). のようなものを使うのがよいかもしれません。

/(?:\/)([^#]+)(?=#|$)/

あるいは、ルックヘッドを完全に省略することもできます(なぜなら ([^#]+) は欲張りなので)、状況に応じて、ルックヘッドを完全に省略することもできます。