如何在时间表示法中自动插入前导零

时间:2017-09-10 11:44:07

标签: javascript regex

以下代码检查用户是否在文本框中插入了正确的时间表示法。 如果符号不正确,将显示警告框。

如果忘记了前导零(即7:45 iso 07:45),它也会显示警告

function validateThis(e){
    //INPUT VALIDATION
        var regexp = /([01][0-9]|[02][0-3]):[0-5][0-9]/; //CORRECT TIME FORMAT
        var correct = (e.value.search(regexp) >= 0) ? true : alert('Enter time as hh:mm (13:25)');
    }

我的问题是,如果忘记而不是通知用户,我如何自动插入前导零

4 个答案:

答案 0 :(得分:2)

您可以将数字(如果是字符串,将其转换为数字)与10进行比较,如果它小于10,则添加零,否则,保持原样:

注意:您只需将字符串拆分为冒号并检查其有效性,无需使用正则表达式。

function leadZero(n) {
  return +n < 10 ? "0" + n : n; // +n in case of string, +n converts it to a number
}

function validateThis(e) {
  var hhmm = e.value.split(':'); // split into hh, mm
  // if there are two values (hh, mm) and
  // 0<=hh<=23 and 0<=mm<=59 => correct time
  if (hhmm.length === 2 && (+hhmm[0]>=0 && 23>=+hhmm[0]) && (+hhmm[1]>=0 && 59>=+hhmm[1])) { // valid date
    var correct = true;
    // add leading zeros
    //               fix hour                 fix minute
    var newTime = leadZero(hhmm[0]) + ':' + leadZero(hhmm[1]);
    console.log(newTime);
  } else {
    alert('Enter a valid time only');
  }
}
<input type="text" onchange="validateThis(this)">

答案 1 :(得分:1)

您可以尝试以下方法:

function verify()
{

var str=$("#time").val();
var patt = new RegExp("^(0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$");

if(patt.test(str))
  {
    if(str.length==4)
      $("#time").val("0"+str);
    console.log("true");
  }
else
  console.log("false");



}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type="text" name="time" id="time" value="" />
<input type="button" name="sbmt" id="sbmt" value="Submit" onclick="verify();">

答案 2 :(得分:0)

在你的帮助下,我制作了以下内容:

function validate(e) {
  var regexp = /([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]/;

  if ((e.value.search(regexp) >= 0)) {
    e.value.length == 4 ? document.getElementById(e.id).value = '0' + e.value : 0;
  } else {
    alert('Time is not entered correctly, enter like hh:mm');
  }
}
<div>
  <label for="name">Time</label>
  <input id="lbl3" class='input' type="text" onchange="validate(this);">
</div>

答案 3 :(得分:-1)

首先,您应该更改正则表达式,以便能够使用和不使用前导零来验证这两种情况。 如果输入有效,您可以使用提供的解决方案或任何其他解决方案修改输入。