javascript - 需要正则表达式来验证时间格式

标签 javascript regex

我有一个日期时间文本框,其中包含日期和时间。 我想验证时间。对于我已验证的日期。 例如日期时间值为 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;
}

感谢您的建议。

最佳答案

一个简单的正则表达式 /^([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后跟 0 之间的任意数字和9
    • | - 或
    • 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 次(因此它不必出现)。
  • $ - 这是句子必须结束的地方

关于javascript - 需要正则表达式来验证时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16168849/

相关文章:

javascript - 如何使用正则表达式和javascript将以下命令拆分为标记:

regex - 将多个匹配项返回到单个单元格中的 Excel VBA Regex 函数

javascript - 嵌套捕获组结果

javascript - 类型 'number' 不可分配给类型 'Date' - Typescript 未编译

php - 什么是建议内容关键字的有效库?

Python 正则表达式 - 匹配仅包含 A、B 或 C 的单词

Python - 将 url 拆分为其组件

java - 正则表达式询问字符串 NurseRoisteringProblem

javascript - 使用不同的 css 和 js 文件的登录页面

javascript - 如何将 JQuery 的appendTo 方法与一长串元素(包含单引号/双引号的组合)一起使用