0

我有一个包含 date 和 time 的 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

一个简单的正则表达式/^([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]- 数字后跟介于和之间0的任何数字109
    • |- 或者
    • 2[0-3]- 数字2后跟和之间的任何0数字3
  • :- 文字:字符
  • ([0-5][0-9])- 从0到的数字5后跟和之间的任何0数字9
  • (?::([0-5][0-9]))?
    • ?:- 非捕获组
    • :- 文字:字符
    • ([0-5][0-9])- 从0到的数字5后跟和之间的任何0数字9
    • ?- 表示前一个语句应该存在 0 次或 1 次(因此不必存在)。
  • $- 这是句子必须结束的地方
于 2013-04-23T12:14:31.963 回答
0

以下正则表达式应该可以工作:/^\d{2}:\d{2}(?::\d{2})?$/.

于 2013-04-23T12:12:24.347 回答