0

この質問が何度も聞かれたことは知っていますが、それらの例は私にはうまくいきません。

単一の正規表現で時間のわずかな部分を取得しようとしています。私が持っているのは:

minute = new RegExp(":[0-9]{1,2}").exec(time).toString().replace(":", "");

.replaceを使用せずにこれを行うにはどうすればよいですか?

4

6 に答える 6

4

時間が次の形式であると仮定するとNN:NN、分は次のように抽出できます。

minute = time.match(/\d{2}$/)[0];

または単純な分割:

minute = time.split(':')[1];
于 2012-08-29T15:29:48.503 に答える
2

キャプチャグループを使用して、必要なものだけを取得します。

var time = '12:29',
    minute = /:([0-9]{1,2})/.exec(time)[1];

// minute is "29"
于 2012-08-29T15:29:07.130 に答える
1

timeこれが「10:15AM」のような時間文字列であると仮定すると、Dateオブジェクトを使用できます(使用する必要があります)。これは仕事に適したツールであり、日付/時刻データを処理するように作られているため、より柔軟性があります。

var time = '10:15 AM';
// handle either a full date string OR a time string
var d = new Date(time);
if (isNaN(d.getTime()))
    var d = new Date('1/1/2012 '+time);

試してみてください:http://jsfiddle.net/gsg8X/

おそらく、秒が存在するかどうかを判断しようとするよりも優れています。これにより、正規表現が壊れたり、必要以上に複雑になったりする可能性があります。日付/時刻関連のデータを解析するには、日付/時刻関連のツールを使用する方がよいと思います。

ドキュメンテーション

于 2012-08-29T15:34:51.800 に答える
1

まだ行っていない場合は、「時間」をDateオブジェクトとして保存します。次に、getMinutes()を使用して、議事録コンポーネントを引き出すことができます。

minute = time.getMinutes();
于 2012-08-29T15:34:03.197 に答える
0

文字列の最後の部分をつかむには、ある種の位置アンカーが必要です

(/:([0-9]{1,2}$)/)
于 2012-08-29T15:31:03.177 に答える
0

これを試して:

minute = new RegExp(":([0-9]{1,2})").exec(time)[1];

これは全体に一致しますが、後で使用できるように、括弧内の部分が一致するものはすべて保存してください。したがって、[1]



誰かがjavascript以外の答えを探しに来た場合に備えて、ここに以下を残しておきます。

後読みをサポートしていないため、これはjavascriptでは機能しません。ありがとう@999。

ポジティブルックビハインドを使用してみてください。そうすれば、交換する必要さえありません:)

minute = new RegExp("(?<=:)[0:9]{1,2}").exec(time).toString();

[0:9]{1,2}実際に一致させたいパターンです。(?<=:)実際には何も消費せずに、背後にコロンがあることを確認するだけです。

于 2012-08-29T15:31:53.887 に答える