Лучше, чем сумасшедшее огромное Regex (предполагая, что это для проверки, а не сканирования):
require 'date'
def valid_date?( str, format="%m/%d/%Y" )
Date.strptime(str,format) rescue false
end
И как редакционная статья в сторону: Eww! Зачем вам использовать такой ужасно разбитый формат даты? Перейдите для ISO8601, YYYY-MM-DD
, который является действующим международным стандартом, имеет последовательный порядок частей и также сортирует лексикографически.