Я получил регулярное выражение в моем коде, которое соответствует шаблону url и забросило ошибку:
/^(http|https):\/\/([\w-]+\.)+[\w-]+([\w- .\/?%&=]*)?$/
Ошибка была "пустой диапазон в char ошибке класса". Я нашел причину этого в части ([\w- .\/?%&=]*)?
. Кажется, Ruby распознает -
в \w- .
как оператор диапазона, а не буква -
. После добавления выхода в тире проблема была решена.
Но исходное регулярное выражение хорошо работало на машинах моих коллег. Мы используем ту же версию osx, rails и ruby: Ruby версия ruby 1.9.3p194, rails - 3.1.6, а osx - 10.7.5. И после того, как мы развернули код на нашем сервере Heroku, все отлично работало. Почему только моя среда имела ошибку в отношении этого регулярного выражения? Каков механизм интерпретации регулярных выражений Ruby?