javascript中的正则表达式捕获时间字符串

时间:2016-03-16 22:25:03

标签: javascript regex

我想匹配以下类型字符串的时间信息:

<16>Jun 16 2013 12:40:39 abcdef

我正在尝试使用以下正则表达式来提取Jun 16 2013 12:40:39的时间信息。

var pattern = /\b[a-zA-Z][a-zA-Z]*[a-zA-Z]\b\s\d{2}\s\d{4}\s\d{2}\:\d{2}\d{2}\g;

这是对的吗?

3 个答案:

答案 0 :(得分:0)

这行甚至不应该编译:

var pattern = /\b[a-zA-Z][a-zA-Z]*[a-zA-Z]\b\s\d{2}\s\d{4}\s\d{2}\:\d{2}\d{2}\g;

首先,模式应该是/pattern/g,你没有很好地定义这个结构。

减少正则表达式:

  1. [a-zA-Z][a-zA-Z]*[a-zA-Z]与带有[a-z]{2,}旗帜的(i)nsensitive-case相同

  2. 如果您在

  3. 之后立即设置空格\b,则无需设置边界\s
  4. 可选地,由于字符串定义明确,您只能写而不是\s

  5. 你可以这样结束这条线:

    var pattern = /\b[a-z]{2,} \d{2} \d{4} (\d{2}:){2}\d{2}/gi;
    

答案 1 :(得分:0)

您可以使用RegExp /([A-S])([a-u]+)(?=\s\d{2})(\s\d{2}\s\d{4})/g来匹配uppdercase字母&#34; A&#34;通过&#34; S&#34; ,两个小写字母后跟空格字符和两位数字符,空格字符后跟两个数字后跟四个数字

&#13;
&#13;
var str = "<16>Jun 16 2013 12:40:39 abcdef";
var pattern = /([A-S])([a-u]+)(?=\s\d{2})(\s\d{2}\s\d{4})/g;
console.log(str.match(pattern))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

下面:

/(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)\s+(0[1-9]|[1-2]\d|3[01])\s+(\d{4})\s+([01]\d|2[0-3]):([0-5]\d):([0-5]\d)/gi

Regex101 link

  • 月:(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)
  • 日:(0[1-9]|[1-2]\d|3[01]) - 01至31
  • 年:(\d{4}) - 0000至9999
  • 小时:([01]\d|2[0-3]) - 00至23
  • 分钟:([0-5]\d) - 00至59
  • 秒:([0-5]\d) - 00至59