コードで正規表現を取得しました。これは、URL のパターンに一致し、エラーをスローしました。
/^(http|https):\/\/([\w-]+\.)+[\w-]+([\w- .\/?%&=]*)?$/
エラーは「charクラスエラーの空の範囲」でした。その原因は([\w- .\/?%&=]*)?
一部にあることがわかりました。Ruby は inをリテラルではなく範囲の演算子として認識-
するようです。ダッシュにエスケープを追加した後、問題は解決しました。\w- .
-
しかし、元の正規表現は同僚のマシンでうまく動作しました。osx、rails、ruby の同じバージョンを使用します。Ruby のバージョンは ruby 1.9.3p194、rails は 3.1.6、osx は 10.7.5 です。コードを Heroku サーバーにデプロイした後も、すべてが正常に機能しました。この正規表現に関して、私の環境だけでエラーが発生したのはなぜですか? Rubyの正規表現解釈の仕組みとは?