【问题标题】:How to check if string contains date using regular expression?如何使用正则表达式检查字符串是否包含日期?
【发布时间】:2017-03-31 16:02:44
【问题描述】:

我有文件,其中我的日志在多行中,每个记录的事件都有日期,我正在尝试编写逻辑 如果行以日期开头,并且 如果第二行不 将日期与第一行合并,这是最终目标,下面的代码作为第一步打印有日期与没有日期的行,但它总是打印 否则声明, 知道什么是实施错误吗?

我的问题不是关于日期对象的验证我只想检查字符串是否包含日期任何格式打印这些行。问题是我想使用日期参数组合多行 og 事件。

ctrl.js

fs.readFile(dir + '/' + logFile, 'utf8', function(err, data) {
    var line = data.split('\n');
    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);
    }
});

文件数据

[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,

【问题讨论】:

  • 我编辑了我的问题,请你重新打开它我真的很挣扎我使用了其他问题的答案,例如parseDate

标签: javascript node.js split fs


【解决方案1】:

您正在使用:

str.match(/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/);

这里 str = [2017-03-23T18:13:16Z] 带有方括号 []

虽然str 是 ISO 日期格式,但您将其与永远不会匹配的 'dd/MM/yyyy' 正则表达式匹配

尝试使用这个正则表达式/^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])(\D?([01]\d|2[0-3])\D?([0-5]\d)\D?([0-5]\d)?\D?(\d{3})?)?$/

new Date(m[3], m[2] - 1, m[1]) 你只返回日、月和年。

同时,将其与具有日期和时间的line 进行比较,即18:13:16Z

您需要从数组中传递它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2018-08-09
    • 2017-02-09
    相关资源
    最近更新 更多