[英]How can I validate inputs against Regex using .every() method?
我有一个 function getSum()
。 在运行一段代码之前,我有两个日期输入并且我正在尝试验证。 我有一个 if 语句,条件是输入数组上的.every
。 在执行代码之前,我需要传入一个 function ,它与正则表达式的两个输入值都匹配。
我很困惑。
var sumButton =
document.querySelector(".sumNumbers");
sumButton.addEventListener("click", getSum);
var dateRegEx = /^(19|20)\d{2}-(0\d{1}|1[0-2])-([0-
2]\d{1}|3[0-1])$/;
var removeErrorMsg =
document.querySelectorAll(".resetError");
removeErrorMsg.addEventListener("click", function()
{
document.getElementById("errorMsg").textContent =
"";
})
function getSum() {
let inputs = ['dateInput1', 'dateInput2'];
let outputs = ['result1', 'result2'];
if (inputs.every(function(){
})) {
inputs.forEach(function(input, index) {
const inputValue =
document.getElementById(input).value;
var sum = 0;
for (var i = 0; i < inputValue.length; i++) {
const num = parseInt(inputValue.charAt(i));
if (!isNaN(num)) {
sum += num;
}
}
const total = (sum - 1) % 9 + 1;
document.getElementById(outputs[index]).textContent
= "Your number is: " + total;
});
} else{
document.getElementById("errorMsg").textContent =
"*error* please enter two dates and two names"
}
//
}
every
方法接受一个回调,该回调将传递给调用 each 的数组的every
元素,如果回调的every
返回值都是true
,则 each 返回true
,否则, every
返回false
。
所以你只需要编写一个回调 function 来传递给every
接受inputs
数组的单个元素并返回 boolean 的人。 要针对正则表达式进行测试,我们可以使用 regex test
方法,如果给定的字符串与正则表达式匹配,则返回true
,否则返回false
。
例如:
function dateIsValid(dateString) {
return dateRegEx.test(dateString);
}
在上下文中:
if (inputs.every(dateIsValid)) {
// ...
}
或者使用内联定义:
if (inputs.every(dateString => dateRegEx.test(dateString))) {
// ...
}
这个没人回答???
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.