使用Ruby正则表达式验证字符串?

4

如何验证以下字符串中的日期和时间格式是否正确,即年、月、日,然后是时间(4位数字,2位数字,2位数字,然后是时间)?

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

谢谢

3个回答

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

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

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的字符串同样有效。但事实上它并不是一个有效的日期时间格式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接