3

次のスクリプトで時間の妥当性を検証しようとしましたが、何らかの理由で 2 番目の値が検証されません。私のスクリプトに何か問題がありますか?

var timeFormat      =   /^([0-9]{2})\:([0-9]{2})$/g;
var time_one        =   '00:00';
var time_two        =   '15:20';

if(timeFormat.test(time_one) == false)
{
    console.log('Time one is wrong');
}
else if(timeFormat.test(time_two) == false)
{
    console.log('Time two is wrong');
}

上記のスクリプトは、コンソールでTime two is wrongを常に返します。また、 time_twoの値を「00:00」に設定しようとしましたが、やはり検証されません。

私の正規表現は間違っていますか?

注:次の正規表現も試しましたが、それでも同じ効果があります:

var timeFormat      =    /(\d{2}\:\d{2})/g;
4

4 に答える 4

11

「グローバル」フラグから来ていると思います。代わりにこれを試してください:

var timeFormat = /^([0-9]{2})\:([0-9]{2})$/;
于 2013-09-11T08:27:21.937 に答える
1

次のオプションを提案できますか。

/^[01]?\d:[0-5]\d( (am|pm))?$/i  // matches non-military time, e.g. 11:59 pm

/^[0-2]\d:[0-5]\d$/              // matches only military time, e.g. 23:59

/^[0-2]?\d:[0-5]\d( (am|pm))?$/i // matches either, but allows invalid values 
                                 // such as 23:59 pm
于 2014-03-26T22:34:41.560 に答える