你好我的梦想建设者。
我正在从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
答案 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