提问者:小点点

只允许使用没有正则表达式的JavaScript使用数字和连字符


我正在尝试构建一个不使用正则表达式(regex)的Nic验证器。

//NIC验证//预期输出格式12345-1234567-1

下面是我的代码示例。 我不明白的是我如何只验证数字和连字符?

let nicVal= myForm.nic.value;
let hyph ='-';


if(nicVal.length===0){
    console.log("Please enter the cnic");
}
else if(nicVal[5]===hyph && nicVal[5]===hyph )
{
console.log("Valid");
}
else{
    console.log("invalid");
}

共1个答案

匿名用户

使用正则表达式会简单得多,但是当您要求一个没有正则表达式的替代方法时,请尝试:

null

let button = document.querySelector('button')
let input = document.querySelector('input')

button.addEventListener('click', function() {
  let value = input.value
  let numbers = [Number(value.substr(0, 5)), Number(value.substr(6, 7)), Number(value.substr(14, 1))]
  let hifens = [value.indexOf('-'), value.lastIndexOf('-')]
  if(numbers.indexOf('NaN') == -1 && hifens[0] == 5 && hifens[1] == 13) {
    console.log('Valid!')
  } else {
    console.log('Invalid!')
  }
})
<input type="text" placeholder="type..." maxlength="15" value="12345-1234567-1">
<button>Check</button>