0

こんにちは、私の夢のビルダーの仲間です。

私はツイッターから時間を解析しており、この正規表現を使用しています:

    {

        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 に答える