坚持代码战挑战,而不是每次都过去

时间:2017-10-26 20:04:35

标签: javascript

ATM机允许使用4或6位数的PIN码,PIN码不能包含4位数字或6位数字。

如果函数传递了有效的PIN字符串,则返回true,否则返回false。

例如:

validatePIN(“1234”)=== true

validatePIN(“12345”)=== false

validatePIN(“a234”)=== false

我的代码:

function validatePIN(pin) {
  //return true or false
  if (typeof(pin)==="number"){
    if (pin.toString().length===4 || pin.toString().length===6){
    return true;
    } 
  } else {
  return false;
  }
}

当我点击“尝试”按钮时,它会返回一些失败的尝试。

通过:21失败:37错误:1

'1234'的输出错误 - 预期:为true,而是得到:false

'0000'的错误输出 - 预期:为true,而是得到:false

'1111'的输出错误 - 预期:为真,反而得到:假

'123456'的错误输出 - 预期:为true,而是得到:false

'098765'的错误输出 - 预期:为真,而是得到:false

'000000'的错误输出 - 预期:为true,而是得到:false

'123456'的错误输出 - 预期:为true,而是得到:false

'090909'的输出错误 - 预期:为true,而是得到:false

1 个答案:

答案 0 :(得分:0)

你可能会失败每一个可能返回true的人,因为你的输入不是数字。是的,数字存在,但它们是字符串,AKA文本的形式。你需要做一些形式的检查。一种实现方式是使用正则表达式过滤掉任何不是数字的内容,并将其与输入的字符串进行比较。 Here是一个很好的网站,可以在您熟悉正则表达式之后使用正则表达式。

let pin = '1432a'
let filteredString = pin.replace(/[^0-9]/g, "") //"1432"
pin === filteredString //false

pin = '142'
filteredString = pin.replace(/[^0-9]/g, "") //"142"
pin === filteredString //true