How to check if string contains date using regular expression?
我有文件,我的日志在多行中每个记录的事件都有日期,我正在尝试编写逻辑
如果行以日期和开头
如果第二行不
将日期合并到第一行作为最终目标,在代码下面作为第一步打印行,其中日期与没有日期但始终打印
其他声明,
什么是错误的实施?
我的问题不是关于日期对象的验证我只想检查字符串是否包含日期任何格式打印那些行。问题是我想使用日期参数组合多行og事件。
ctrl.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | fs.readFile(dir + '/' + logFile, 'utf8', function(err, data) { var line = data.split(' '); var messageDateInfo = line.split('|')[0].replace(/[\[\]']+/g, ''); var d = parseDate(messageDateInfo); function parseDate(str) { var m = str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/); return (m) ? new Date(m[3], m[2] - 1, m[1]) : null; } if (line.includes(d)) { console.log('print lines with date', line); } else { console.log('print lines without date', line); } }); |
FILEDATA
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [2017-03-23T18:13:16Z]|verbose|bmid: n/a|infra.topicWorkers|topology changed, emitting topology event { newTopology: [ '-0000001337', '-0000001338', '-0000001339', '-0000001340', '-0000001341', '-0000001342' ], oldTopology: [ '-0000001337', '-0000001338', '-0000001339', '-0000001340', '-0000001341' ], workerId: 6, pid: 30488 } [2017-03-23T18:13:16Z]|verbose|bmid: n/a|infra.topicWorkers|topology changed, emitting topology event { newTopology: [ '-0000001337', '-0000001338', '-0000001339', '-0000001340', '-0000001341', '-0000001342' ], oldTopology: [], workerId: 4, |
你正在使用:
这里的str =
而
尝试使用此正则表达式
和
然而,将它与具有日期和时间的
您需要从数组中传递它们。