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

Regex 正则表达式从数字中排除精确数字,regex,Regex,大家好,我的梦想缔造者们 我正在解析来自twitter的时间,我正在使用以下正则表达式: { match = /^[1]/.exec(obj.tweetTime); if(match != null){ time = "1 hour ago"; } else { match = /^[0-9]{1,2}/.exec(obj.tweetTime); ti

大家好,我的梦想缔造者们

我正在解析来自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:我是正则表达式的初学者,我知道/^[0-9]{1,2}/实际上允许数字从0到99,但正如我所说的,它满足我的需要,只是问是否有可能正确地做到这一点,因为我缺乏知识


谢谢你,非常爱我会这样做:

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

如果小时数是10、11或12,那么您的第一个正则表达式也会匹配,因为所有这些都是从
1
开始的。你确定要为此使用正则表达式吗?如果不是正则表达式,我应该使用什么?PS:我删除了“^”,所以它不会看整行。我从twitter收到的字符串是这样的“13h”。。它在末尾加上h。我喜欢你的想法,你能解释一下你的正则表达式吗?总是这样吗?在我的Twitter客户端上,我在同一个位置看到了
13m
3d
——是同一个字段吗?无论如何,我的编辑将适用于您提到的用例。我得到13h,13m,13s。。如果超过1天,它会写“1月24日”。。我只关心h、m和s。我用它来过滤一些东西:/[0-9]{1,2}[m,h,s]/然后我用/[0-9]{1,2}[m]/和[h]和[s]来获得1级的深度,然后我试着看看数字是1还是大于1来正确地打印“小时前”或“小时前”。我没有意识到字符串是以任何奇特的方式格式化的。在这种情况下,请参见编辑!非常感谢你们在这件事上付出了很多努力,我会投赞成票,但没有足够的声誉=/谢谢你们,你们都是好人!