正则表达式验证小数字段为小时和分钟格式

时间:2018-07-09 16:31:44

标签: javascript regex

我需要将企业应用程序上的小数字段验证为小时和分钟格式。

例如7.30是7小时30分钟

9.55是9小时55分钟

10.80 .....不应接受。

最高为23.59。

我尝试了示例代码。

function ValidateTotalHours() {
  var totalhours = Xrm.Page.getAttribute("new_totalhours").getValue();

  if (!/^([0-23]).([0-5][0-9])$/.test(totalhours)) {
    Xrm.Utility.alertDialog("Total Hours Format is invalid");

  }

}

在继续之前,我尝试使用https://regex101.com/进行验证,但是我的Regex表达式似乎不正确。

关于正确实施的任何想法。

2 个答案:

答案 0 :(得分:1)

RegEx中的[0-23]

/^([0-23]).([0-5][0-9])$/

实际上是在指定:

[0123]

您想要这样的东西:

/^(2[0-3]|[01]?[0-9])\.[0-5][0-9]$/

答案 1 :(得分:1)

您的模式不正确:

  • [0-23]等于[0123]
  • .需要转义。 \.,否则它将匹配除换行符之外的任何字符

您需要的是:^([0-1]?[0-9]|2[0-3])\.([0-5][0-9])$

const pattern = /^([0-1]?[0-9]|2[0-3])\.([0-5][0-9])$/;

const times = ['24.00', '23.60', '22.59', '04.05', '4.05', '23.02', '15.25', '24.59'];

times.forEach(time => {
  console.log(`${time}: ${pattern.test(time)}`);
});