この質問が何度も聞かれたことは知っていますが、それらの例は私にはうまくいきません。
単一の正規表現で時間のわずかな部分を取得しようとしています。私が持っているのは:
minute = new RegExp(":[0-9]{1,2}").exec(time).toString().replace(":", "");
.replaceを使用せずにこれを行うにはどうすればよいですか?
この質問が何度も聞かれたことは知っていますが、それらの例は私にはうまくいきません。
単一の正規表現で時間のわずかな部分を取得しようとしています。私が持っているのは:
minute = new RegExp(":[0-9]{1,2}").exec(time).toString().replace(":", "");
.replaceを使用せずにこれを行うにはどうすればよいですか?
時間が次の形式であると仮定するとNN:NN
、分は次のように抽出できます。
minute = time.match(/\d{2}$/)[0];
または単純な分割:
minute = time.split(':')[1];
キャプチャグループを使用して、必要なものだけを取得します。
var time = '12:29',
minute = /:([0-9]{1,2})/.exec(time)[1];
// minute is "29"
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/
おそらく、秒が存在するかどうかを判断しようとするよりも優れています。これにより、正規表現が壊れたり、必要以上に複雑になったりする可能性があります。日付/時刻関連のデータを解析するには、日付/時刻関連のツールを使用する方がよいと思います。
ドキュメンテーション
まだ行っていない場合は、「時間」をDateオブジェクトとして保存します。次に、getMinutes()を使用して、議事録コンポーネントを引き出すことができます。
minute = time.getMinutes();
文字列の最後の部分をつかむには、ある種の位置アンカーが必要です
(/:([0-9]{1,2}$)/)
これを試して:
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}
実際に一致させたいパターンです。(?<=:)
実際には何も消費せずに、背後にコロンがあることを確認するだけです。