Однострочные регулярные выражения в Rails

Evgenii Burmakin, 22.08.2014

При валидации поля модели регулярным выражением вы можете получить ошибку

ArgumentError: The provided regular expression is using multiline anchors (^ or $), which may present a security risk. Did you mean to use \A and \z, or forgot to add the :multiline => true option?

В моем случае регулярка была такого вида:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

Это шаблон, просто проверяющий валидность URL сайта.

Итак, исходя из текста ошибки, делаем вывод, что Rails считает небезопасным использование символов ^ и $. И предлагает заменить их на \A и \z соответственно. Заменяем и получае регулярное выражение, которое нам ничего не ломает и корректно выполняет свою задачу:

/\A(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?\z/