我想匹配以下类型字符串的时间信息:
<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;
这是对的吗?
答案 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
,你没有很好地定义这个结构。
减少正则表达式:
[a-zA-Z][a-zA-Z]*[a-zA-Z]
与带有[a-z]{2,}
旗帜的(i)nsensitive-case
相同
如果您在
\b
,则无需设置边界\s
可选地,由于字符串定义明确,您只能写而不是
\s
你可以这样结束这条线:
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; ,两个小写字母后跟空格字符和两位数字符,空格字符后跟两个数字后跟四个数字
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;
答案 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
(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