正则表达式匹配 mm/dd/yyyy hh:mm:ss AM 或 PM

Joh*_*eYo 2 ruby regex format time date

我有一个为时间戳创建信息的程序,时间戳必须符合以下格式:MM/DD/YYYY HH:MM:SS AM or PM

例如:

06/02/2016 10:14:56 AM

09/14/2014 9:16:32 PM

我需要一种方法来使用更好的正则表达式来匹配此信息,但它不一定是正则表达式。任何对此的帮助将不胜感激。

我知道如何匹配数字/\d+/, 和非空白字符,但是匹配数字不会抓住:, /, AM or PM。抓取非空白区域将抓取除了明显空白区域之外的所有内容。

因此,回顾一下,我需要一种方法来验证格式化的时间和日期:MM/DD/YYYY HH:MM:SS AM or PM可以包含 20 到 22 个字符(包括空格)存在或不作为用户输入给出。

我需要的示例:

def timestamp
  print 'Enter the time stamp to verify: '
  ts = gets.chomp
  if !(ts[REGEX-HERE])
    puts 'Invalid formatting of time stamp'
    exit 1
  else
    puts ts
  end
end

# <= 6/1/2016 1:10:5 PM will output '6/1/2016 1:10:5 PM'
# <= 06/01/2016 01:10:05 PM will output 'Invalid formatting of time stamp'
# <= 10/1/2016 1:25:43 AM will output '10/1/2016 1:25:43 AM'
# <= 10/01/2016 01:25:43 AM will output 'Invalid formatting of time stamp'
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 6

这个正则表达式应该适合您验证您的输入:

^\d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d{1,2}:\d{1,2} [AP]M\z
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

这将验证这些输入行之一:

10/22/2016 9:15:32 PM
9/9/2016 9:9:5 AM
Run Code Online (Sandbox Code Playgroud)