2010-06-28 40 views
4

我如何可以验证的是,在下面的字符串的日期和时间是正确的格式,即年,月,日和随后的时间(4位,2位,2位,然后将时间)使用ruby Reg表达式验证字符串?

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

感谢

回答

2
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的字符串将同样有效。它不是。

3
/Event \(No \d+\) \d+ at (\d{4})\/(\d{2})\/(\d{2}) (\d\d):(\d\d) \([\w\s]+\)/ 
6

为什么创建自己的正则表达式时,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 
相关问题