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