javascript - 操作 .replace() 匹配

标签 javascript regex

我有一个像这样的文本字符串:

1398097442.61 INFO Some Name: Some Thing ...9381

我想将开头的数字转换为人类可读的日期时间。

我正在做的是这样的:

input.replace(/^(\d+\.?\d*)/g, new Date(parseFloat("$1") * 1000).toGMTString());

这行不通。如果我只是重新打印匹配“$1”,那就没问题了。我怎样才能操纵比赛?

最佳答案

只需确保传递一个要替换的函数(毕竟,这不是 Scala):-)

input.replace(/^(\d+\.?\d*)/g, function(match, timestamp) {
 return new Date(parseFloat(timestamp) * 1000).toGMTString();
});

您的做法根据对字符串“$1”调用parseFloat的结果创建了一个日期,然后获取结果(NaN) 并将其传递给 Date 构造函数并得到一个 GMT 字符串 - 然后将其用作正则表达式的替换字符串。

想要要做的是推迟执行new Date代码,直到找到匹配项。自 String.prototype.replace可以将函数作为第二个参数,我们只需将 new Date 行为包装在函数中,一切都会正常工作。

关于javascript - 操作 .replace() 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279420/

相关文章:

javascript - 使用基本原语创建的家谱具有针对子项的额外链接

Javascript 幻灯片中心?

ios - 解析和收缩俄语全名

ruby-on-rails - 只有在逗号后没有空格的情况下才在逗号后添加空格?

javascript - 如何改进这段代码,转换字符串

javascript - 没有全局标志的正则表达式分组 OR 运算符匹配策略

java - EDI 文件的正则表达式

使用正则表达式删除父括号

javascript - AJAX 请求、表单提交中出现解析器错误

JavaScript 字符串替换 - 如何在替换字符串中使用匹配的变量?