使用JavaScript解析日志

时间:2012-03-05 15:57:19

标签: javascript regex parsing logging

我需要提取“40:37.298s”来自:

Total time: 40:37.298s

使用JS,但我是JS的新手,可以帮助一些吗?

7 个答案:

答案 0 :(得分:6)

> 'Total time: 40:37.298s'.substr(12)
'40:37.298s'

如果您想使用正则表达式以获得更大的灵活性:

> /([0-9]+:[0-9]+\.[0-9]+s)/.exec('Total time: 40:37.298s')[1]
'40:37.298s'

答案 1 :(得分:2)

有很多方法可以做到这一点。这是一个:

var str = "Total time: 40:37.298s";
str.split(": ")[1]

在大多数情况下,我更喜欢拆分一些已知的枢轴,而不是尝试提取特定的子串(正如其他人所示),原因如下:

  • 它更灵活;如果字符串的第一部分包含轻微变化(但子字符串方法不会)
  • ,这仍然有效
  • 更容易看到正在提取的内容(但子字符串方法要求我手动计算字符串中的位置以验证我选择了正确的内容)

答案 2 :(得分:1)

var time = 'Total time: 40:37.298s';

time = time.match(/\d{1,2}:\d{1,2}\.\d+s/);

http://jsfiddle.net/ypzgJ/

答案 3 :(得分:0)

你正在寻找子串方法:

"Total time: 40:37.298s".substring("Total time: ".length);

答案 4 :(得分:0)

var result = "Total time: 40:37.298s".replace(/^.*([0-9]{2}:[0-9]{2}\.[0-9]{3}s)/g,'$1')

答案 5 :(得分:0)

var item = 'Total time: 40:37.298s';
var pattern = /\d{1,2}\:\d{2}\.\d{3}s/g;
var res = pattern.exec(item);

那是:

  • \ d {1,2}一位或两位数字
  • \:':'char
  • \ d {2}两位数
  • 。 '。'炭
  • \ d {3}三位数
  • 是's'char

答案 6 :(得分:0)

我想说使用像[:\.0-9]*s

这样的RegEx

例如

yourText.match("regex")

在你的情况下它将是

"Total time: 40:37.298s".match("[:\.0-9]*s")[0]

它将返回40:37.298s