正则表达式从数字中排除精确数字

时间:2013-01-24 13:37:58

标签: regex

你好我的梦想建设者。

我正在从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";
        }
    }

我的问题是,如果有更简单的方法吗?如你所见,我有两位数的时间。我只想格式化我的打印件。你可以看到小时/小时。

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

PS:我是regex的初学者,我知道/ ^ [0-9] {1,2} /允许从0到99的数字实际上,但正如我所说它适用于我的需要,只是问它是否是因为我缺乏知识,所以可以正确地做到这一点。

谢谢你,非常喜欢< 3

1 个答案:

答案 0 :(得分: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