繁体   English   中英

如何使用.every() 方法验证针对正则表达式的输入?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM