0

你好,我的梦想建设者。

我正在从 twitter 解析时间,我正在使用这个正则表达式:

    {

        match = /^[1]/.exec(obj.tweetTime);
        if(match != null){
            time = "1 hour ago";
        }
        else
        {
        match = /^[0-9]{1,2}/.exec(obj.tweetTime);
        time = match + " hours ago";
        }
    }

我的问题是,是否有更简单的方法可以做到这一点?如您所见,我的时间有 2 位数字。我只想正确格式化我的打印。如您所见,小时/小时。

是否可以只写 1 个正则表达式并只使用 1 个条件括号?

PS:我是正则表达式的初学者,我知道 /^[0-9]{1,2}/ 实际上允许从 0 到 99 的数字,但正如我所说,它可以满足我的需要,只是询问是否可以这样做这是正确的,因为我缺乏知识。

谢谢你,非常喜欢<3

4

1 回答 1

1

我会这样做:

var match = obj.tweetTime.match(/^\d+$/);

if (match) {
  var time = match[0] + ' hour' + (match[0] == 1 ? '' : 's') + ' ago';
}

编辑原来字符串已格式化!在这种情况下:

var match = obj.tweetTime.match(/^(\d+)([smhd])$/);

if (match) {
  var units = { s: 'second', m: 'minute', h: 'hour', d: 'day' },
      time  = match[1] + ' ' + units[match[2]] + (match[1] == 1 ? '' : 's') + ' ago';
}

解释正则表达式:

^         Anchor matches to the beginning of the string
(\d+)     Capture one or more digits in first group
([smhd])  Capture s, m, h or d in second group
$         Anchor to end of string
于 2013-01-24T13:55:34.507 回答