任务: ATM机允许4或6位PIN码,PIN码不能包含4位数或6位数字。 如果函数传递了有效的PIN字符串,则返回true,否则返回false。
我的解决方案:
function validatePIN (pin) {
//return true or false
if (!isNaN(pin) && Number.isInteger(pin) && pin.toString().length == 4 || pin.toString().length == 6) {
return true
} else {
return false
}
}
我得到的唯一错误是当我将4位数作为字符串传递("1234"
)时 - 它等于false
。
答案 0 :(得分:4)
function validatePIN (pin) {
// return true or false
if (typeof pin === "string" && !~pin.indexOf('.') && !isNaN(Number(pin)) && (pin.length === 4 || pin.length === 6)) {
return true;
} else {
return false;
}
}
修改强>
现在只接受一个字符串," 1234.0"失败。
<强> EDIT2:强>
<00> 0000和000000成功,但可能不是最优雅的解决方案:)<强> EDIT3:强>
添加了一个由GingerPlusPlus建议的简短示例。
function validatePIN (pin) {
// return true or false
return typeof pin === "string" && !~pin.indexOf('.') && !isNaN(Number(pin)) && (pin.length === 4 || pin.length === 6);
}
答案 1 :(得分:1)
function validatePIN(pin) {
var isNumber = /^\d+$/.test(pin) && (pin.length == 4 || pin.length == 6)
return isNumber
}
validatePIN('0193')
//returns true
答案 2 :(得分:0)
您可以使用Array.prototype.every()
,Array.prototype.some()
,String.prototype.match()
<input type="text" />
<button>validate pin</button>
<script>
var validatePIN = (args) => {[...args] = args;
return args.every(v => v.match(/\d/)) &&
[4, 6].some(n => args.length === n)};
document.querySelector("button")
.addEventListener("click", (e) =>
alert(validatePIN(e.target.previousElementSibling.value))
)
</script>
答案 3 :(得分:0)
function validatePIN (pin) {
//return true or false
return /^\d+$/.test(pin) && (pin.length === 4 || pin.length === 6)
}
答案 4 :(得分:0)
function validatePIN (pin) {
if (pin.length !== 4 && pin.length !== 6) {
return false;
}
for (let i = 0; i < pin.length; i++) {
if (pin[i] > '9' || pin[i] < '0') {
return false;
}
}
return true;
}
答案 5 :(得分:0)
这是解决使用正则表达式的另一种方法。
function validatePIN(pin) {
return /^(\d{4}|\d{6})$/.test(pin)
}
validatePIN('2345')
//returns true
validatePIN('2.45')
//reutrns false
答案 6 :(得分:0)
function validatePIN (pin) {
if (pin.length == 4 || pin.length == 6)
{
for (let i = 0; i < pin.length; i++)
{
if (pin[i] == "0" ||
pin[i] == "1" ||
pin[i] == "2" ||
pin[i] == "3" ||
pin[i] == "4" ||
pin[i] == "5" ||
pin[i] == "6" ||
pin[i] == "7" ||
pin[i] == "8" ||
pin[i] == "9") ;
else return false;
}
return true;
}
else return false;
}
此代码检查PIN长度,并通过数字而不是数字传递所有测试任务...