遅くなる正規表現

JavaScript正規表現リテラルに大体マッチする正規表現として下のものを使っていた(Meryシンタックスハイライト用)。

/(\\.|\[(\\.|[^\]])*\]|[^/\n])+/[gimy]*(?=[ \t]*[.;])

が、これは"\"を大量に含むマッチしない文字列で遅い。最初は無限ループか何かでフリーズしているのかと思ったが、超遅いだけだった。これを避けるには、下のようにする。

/(\\.|\[(\\.|[^\]])*\]|[^/\n\\])+/[gimy]*(?=[ \t]*[.;])

"\x"は、\\.[^/\n] にも [^/\n][^/\n] にもマッチするので、マッチしない文字列で"\"がたくさん現れると、何とかマッチさせようと頑張って組み合わせ爆発を起こしてしまうのだろう。
そもそも、上の正規表現は"/hoge\/;"でもマッチするので間違っていた。