Edw*_*ler 1 ruby regex datetime
我需要一个与日期和可选时间匹配的正则表达式模式.
日期应为m/d/yyyy格式的有效美国日期.时间应该是h:mm:ss am/pm24小时或24小时hh:mm:ss.
赛事:2011年9月1日| 2011年9月1日上午10:00 | 9/1/2011 10:00 AM | 2011年9月1日10:00:00
这个模式将在Ruby on Rails项目中使用,因此它应该是可以通过Ruby使用的格式.请参阅http://rubular.com/进行测试.
这是我现有的日期模式(可能是过度杀戮):
DATE_PATTERN = /^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}/
Run Code Online (Sandbox Code Playgroud)
正则表达式对于这种工作来说太可怕了.如果您正在使用Ruby,我建议使用DateTime.strptime来解析数据并检查其有效性:
def validate_date(date_str)
valid_formats = ["%m/%d/%Y", "%m/%d/%Y %I:%M %P"]
#see http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime for more
valid_formats.each do |format|
valid = Time.strptime(date_str, format) rescue false
return true if valid
end
return false
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5439 次 |
| 最近记录: |