javascript - 我不明白为什么我的 nodejs/javascript 正则表达式不工作

标签 javascript regex node.js

我有一些要解析的简单文本:

total 4.0K
-rw-rw-r-- 1 346 Mar  1 08:50 save_1
-rw-rw-r-- 1   0 Feb 28 17:28 save_2
-rw-rw-r-- 1   0 Feb 28 17:28 save_3

我有一个正则表达式,我已经在不同的正则表达式测试网站上测试过它:

\w{3}\s+\d{1,2}\s\d{2}\:\d{2}\s\w{4}\_\d

我正在尝试将示例文本作为 Node.js 应用程序中以下函数的输入,并返回一个对象或数组,其中包含从月份到行尾的 3 个不同的匹配项。

function parse(str) {
    var regex = new RegExp("\w{3}\s+\d{1,2}\s\d{2}\:\d{2}\s\w{4}\_\d");
    return regex.test(str);
    //return str.match(regex);
}

我不明白为什么 .test() 中的 bool 值是假的,而 .match() 中的对象是空的。

如有任何帮助,我们将不胜感激。

最佳答案

而不是尝试解析 ls 的输出,which is bad , 你应该简单地使用 node.js 提供的文件系统操作。使用文件系统操作,您可以确定您的程序将在(几乎)任何边缘情况下工作,因为输出定义明确。它甚至可以防止文件夹将来包含的文件多于或少于三个!

正如您在评论中所述,您需要文件夹中文件的名称和日期/时间。那么让我们来看看:

fs.readdir(path, callback) : fs.readdir 将为您提供路径中指定文件夹中的文件名数组。您可以将它们传递给 fs.stat 以找出 mtime:

fs.stat(path, callback) : fs.stat() 会给你一个 fs.Stats 的对象其中包含 mtime 属性中的 mtime。

所以你的代码之后看起来像这样:

fs.readdir('dir', function (err, files) {
    for (var i = 0; i < files.length; i++) {
        (function () {
            var filename = files[i]
            fs.stat('dir/' + filename, function (err, stats) {
                console.log(filename + " was last changed on " + stats.mtime);
            });
        })();
    }
});

输出是:

[timwolla@~/test]node test.js
5 was last changed on Fri Mar 01 2013 20:24:35 GMT+0100 (CET)
4 was last changed on Fri Mar 01 2013 20:24:34 GMT+0100 (CET)
2 was last changed on Fri Mar 01 2013 20:24:33 GMT+0100 (CET)

如果您需要返回值,请使用这些方法的相应 Sync 版本。但是,这些会阻塞您的 node.js 事件循环。

关于javascript - 我不明白为什么我的 nodejs/javascript 正则表达式不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15164331/

相关文章:

javascript 条件 onclick 表单

javascript - MYR 货币四舍五入

python - 如何在 python 中通过正则表达式替换/修改模式?

php - 在PHP中使用正则表达式匹配同一个句子中相同的单词组合

model-view-controller - 我可以通过 Node.js 向客户端发送多个响应吗?

node.js - Webpack:错误:调试失败。错误的表达

javascript - ngDialog 忽略 AngularJS 1.5 中表单中的 NG 属性

javascript - 从 React 中的文件夹加载本地存储图像的正确方法

Java 正则表达式 : How to return the whole word if the words ends with a specific string

node.js - 如何获取 Firebase 动态链接分析 Rest API (NodeJS) 的正确访问 token