Проверка строки с использованием выражений ruby ​​Reg? - PullRequest
4 голосов
/ 28 июня 2010

как я могу проверить, что дата и время в следующей строке имеют правильный формат, то есть год, месяц, день, а затем время (4 цифры, 2 цифры, 2 цифры и затем время)

"Event (No 3) 0007141706 at 2010/04/27 11:48 ( Pacific )"

спасибо

Ответы [ 3 ]

6 голосов
/ 28 июня 2010

Зачем создавать собственные регулярные выражения, когда Ruby может обработать для вас синтаксический анализ?

>> require 'date'
 => true

>> str = "Event (No 3) 0007141706 at 2010/04/27 11:48 ( Pacific )"
>> dt = DateTime.parse(str)
 => #<DateTime: 2010-04-27T11:48:00-08:00 (98212573/40,-1/3,2299161)> 

Это также гарантирует, что дата действительна, а не только в распознаваемом формате:

>> str = "Event (No 3) 0007141706 at 2010/13/32 25:61 ( Pacific )"
>> dt = DateTime.parse(str)
ArgumentError: invalid date
3 голосов
/ 28 июня 2010
/Event \(No \d+\) \d+ at (\d{4})\/(\d{2})\/(\d{2}) (\d\d):(\d\d) \([\w\s]+\)/
2 голосов
/ 28 июня 2010
if "Event (No 3) 0007141706 at 2010/04/27 11:48 ( Pacific )" =~ /\d{4}\/\d{2}\/\d{2} \d{2}:\d{2}/
  puts "Date and time found."
end

Это проверит, содержит ли ваша строка дату и время в указанном формате.

Однако он проверяет только количество цифр, поэтому строка, содержащая 2010/13/99 93:71, будет одинаково действительной. Что это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...