0

date と time の両方を含む datetime テキストボックスがあります。時刻を検証したい。検証した日付について。たとえば、datetime 値は 04/23/2013 05:26 pm です。

00:00:00 の形式になる時刻を検証できる正規表現が必要です。すべて数字で、特殊文字や数字以外は入力されません。dd:dd:dd がすべて 2 桁であることを検証したいだけです。たとえば、10:10:10 と 01:02 と入力できます。

私はこのようにjsの方法で試しました.正規表現の知識がないので、提案が必要です.

function ValidateDate()
{
  //getting the value from textbox
  var dateVal=document.getElementById('txtDateTime').value;
  //after one space there is time..as i am using a datepicker and timepicker format
  var time=dateVal.split(' ')[1];   
  var isValidTime=CheckTime(time);
}


function CheckTime(time)
{
var timePart=time.split(":");
var hour = timePart[0];
var minute = timePart[1];
var second = timePart[2]; 


if((parseInt(hour,10)<0) || (parseInt(hour,10)>59))
{   
  return false;
}

if((parseInt(minute)>59) || (parseInt(minute)<0))
  {      
     return false;     

  }

 if((parseInt(second)<0) || (parseInt(second)>59))
  {
      return false;
  }  

  return true;
}

ご提案いただきありがとうございます。

4

2 に答える 2

5

willの単純な正規表現が機能し/^([0-1][0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9]))?$/gます。

10:00:00 - OK
01:00:00 - OK
60:00:00 - Fail
30       - Fail
30:00    - Fail
23:59    - OK
24:00    - Fail
23:60:60 - Fail
23:59:59 - OK

正規表現の剖検:

  • ^- ここから文を開始する必要があります
  • ([0-1][0-9]|2[0-3])
    • [0-1][0-9]-との間の任意の数字01続く数字09
    • |- また
    • 2[0-3]-との2間の任意の数字が続く数字03
  • :- リテラル : 文字
  • ([0-5][0-9])- から までの数字の0後にと5の間の任意の数字が続く09
  • (?::([0-5][0-9]))?
    • ?:- 非捕獲グループ
    • :- リテラル : 文字
    • ([0-5][0-9])- から までの数字の0後にと5の間の任意の数字が続く09
    • ?- は、前のステートメントが 0 回または 1 回存在する必要があることを意味します (そのため、存在する必要はありません)
  • $- ここで文を終了する必要があります
于 2013-04-23T12:14:31.963 に答える
0

次の正規表現が機能するはずです: /^\d{2}:\d{2}(?::\d{2})?$/.

于 2013-04-23T12:12:24.347 に答える