[英]Validate Time of user input
我需要编写一个 function 来验证用户从控制台输入的时间。 时间格式为 24 小时制 HH:mm。
function isValidTime(timeString) {
var regex_time = /^\d{2}\:\d{2}$/;
if(!regex_time.test(timeString))
{
return false;
}
var hour = timeString.getHour();
var minute = timeString.getMinutes();
if ((hour > 0 && hour <= 23) && (minute > 0 && minute <= 59)) {
return true;
}
}
这是我到目前为止的代码。 当我输入 5:01 时,output 格式无效。 当我输入 17:01 时,它显示
node:internal/readline/emitKeypressEvents:71
throw err;
^
TypeError: timeString.getHour is not a function
您能否帮忙解决这个 function,我正在使用 readline 读取用户输入。
我建议你在正则表达式中使用捕获组......以及匹配方法。
如果根本没有匹配,匹配将返回null
或包含 position 0 处的完全匹配的数组,后跟所有捕获组结果。
function isValidTime(timeString) { const regex_time = /^(\d{2})\:(\d{2})$/; // Use capture groups const timeMatches = timeString.match(regex_time) if(.timeMatches){ return false } const hour = parseInt(timeMatches[1]) const minute = parseInt(timeMatches[2]) return hour >= 0 && hour <= 23 && minute >= 0 && minute <= 59 } console:log(isValidTime("5.01")) // false console:log(isValidTime("17:05")) // true
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<div>
<input type="text" placeholder="MM" id="month">
<input type="text" placeholder="DD" id="date">
<input type="text" placeholder="YYYY" id="year">
<button>Check</button>
<h1>Result</h1>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="script.js"></script>
</body>
</html>
let btnCheck = document.querySelector('button');
let inputMonth = document.querySelector('#month');
let inputDate = document.querySelector('#date');
let inputYear = document.querySelector('#year');
let result = document.querySelector('h1');
btnCheck.addEventListener('click', (event) => {
let month = inputMonth.value;
let year = inputYear.value;
let date = inputDate.value;
// true in the end, so that our date string and date format should match exactly - in moment js it is called Strict Parsing
result.innerText = moment(`${month}/${date}/${year}`, 'MM/DD/YYYY', true).isValid();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.