在字符串中用短划线验证/检查值

时间:2018-04-05 19:46:08

标签: javascript string

我真的需要你的帮助,

我想创建一个函数,以便验证(返回有效或无效)以下字符串(由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!') }

}

3 个答案:

答案 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 ;

我希望我能很好地解释你的情况。如果还有别的事要做,请告诉我。