我真的需要你的帮助,
我想创建一个函数,以便验证(返回有效或无效)以下字符串(由var x表示)在7个短划线中的每一个之后都有值
var x = 4-D-5240-P43-120-08A2-8123-0000 (valid)
以下一些x无效的字符串示例
var x = 4--5220--120-08C2-8072- (invalid)
var x = 4--5217-P41-120--8072- (invalid)
var x = --5217-P41---8072- (invalid)
我尝试过以下操作,但没有值时出错:
function test() {
var str1 = "4-D-5240-P43-120-08A2-8123-0000" //works
str1 = str.split('-')
var str = "4--5240-P43--08A2-8123-0000" //error here <--
str = str.split('-')
if (str.length < 8) { alert('validation failed') }
else { alert('validation passed!') }
}
答案 0 :(得分:0)
您是否考虑过正则表达式?
const
pattern = /(([\d\w]+)-([\d\w]+)-([\d\w]+)-([\d\w]+)-([\d\w]+)-([\d\w]+)-([\d\w]+)-([\d\w]+))/,
strs = ["4-D-5240-P43-120-08A2-8123-0000", "4--5217-P41-120--8072-", "--5217-P41---8072-", "4--5220--120-08C2-8072-"];
strs.forEach((str) => {
console.log(`${str} is valid: ${ pattern.test(str) }`);
});
答案 1 :(得分:0)
您可以使用正则表达式尝试这样的事情。
var regex1 = /[0-9|a-z][-][0-9|a-z]/g;
var str = "4--5220--120-08C2-8072-";
var str1 = "4-D-5240-P43-120-08A2-8123-0000"
if(str.match(regex1).length== 4) {
alert("match");
}
else
{
alert("no match");
}
if(str1.match(regex1).length== 4) {
alert("match");
}
else
{
alert("no match");
}
答案 2 :(得分:0)
因此,对于1st声明代码和数据目标“ - ”
var id= "100-2-8-8-8-8-8ssss80-0";
var arr = id.split("-");
检查代码是否有效的第1步。我们将有少于或多于7的破折号输出将无效,否则函数将运行另一个函数来检查我们是否在正确的位置有破折号。
function countDash(){
if (arr.length ==8){
result();
}
else{
alert("invalid");
}
}
在我们拆分函数之后,我们需要检查数组的每个值是否都有值。如果破折号是第1个,最后一个或多个字符,我们将获得空值。
function check(value){
return value.length<1;
}
现在我们使用之前声明的函数来检查数组的每个值。因此,如果数组为空,我们将输出无效,否则代码将是有效的
function result(){
if(arr.some(check)){
alert("invalid");
}
else{
alert("valid");
}
}
最后我们需要运行第一个功能。
window.onload= countDash ;
我希望我能很好地解释你的情况。如果还有别的事要做,请告诉我。