我正在尝试这样做,以便当用户输入数字时,如果他们碰巧输入了数字,并且该数字有两个或多个小数位,则告诉他们该数字无效,并且只能是小数点后一位并重述提示。
const MIN = 0;
const MAX = 7;
gradeInput = parseFloat( prompt('Enter Grade for ' + codeInput + '') );
while( isNaN( gradeInput ) || gradeInput<MIN || gradeInput>MAX )
{
alert('Your input was invalid');
gradeInput = parseFloat(prompt('Enter Grade for ' + codeInput + ''));
}
答案 0 :(得分:0)
您可以使用a regular expression来验证输入是否正确。您可以使用以下模式^\d+(?:\.\d)?$
(see it on Regex101)
const regex = /^\d+(?:\.\d)?$/;
const wrongInput = "12.3.4";
const correctInput = "1.2";
console.log("is wrongInput valid?", regex.test(wrongInput));
console.log("is correctInput valid?", regex.test(correctInput));
正则表达式检查输入的内容是纯数字还是数字,然后是一个点,然后是一个数字。
因此,在您的情况下,您需要在解析之前检查提供的值的格式是否正确:
const regex = /^\d+(?:\.\d)?$/;
let codeInput = "algebra"
let userGradeInput = prompt('Enter Grade for ' + codeInput + '');
while (!regex.test(userGradeInput)) { //if there is no match
alert('Your input was invalid');
userGradeInput = prompt('Enter Grade for ' + codeInput + '');
}
gradeInput = parseFloat(userGradeInput);
console.log(gradeInput)
此代码不做其他测试,只是为了说明如何使用正则表达式。要对输入执行所有检查,您可以拥有一个单独的功能,因此可以轻松地重复使用它:
function isValid(input) {
const MIN = 0;
const MAX = 7;
const regex = /^\d+(?:\.\d)?$/;
if (regex.test(input)) { //only do the other checks if the input looks correct
const parsedInput = parseFloat(input);
return parsedInput > MIN && parsedInput < MAX; //check if it's within bounds
} else {//it doesn't even look like a number
return false;
}
}
let codeInput = "algebra"
gradeInput = prompt('Enter Grade for ' + codeInput + '');
while(!isValid(gradeInput)) {
alert('Your input was invalid');
gradeInput = parseFloat(prompt('Enter Grade for ' + codeInput + ''));
}
console.log(gradeInput)
最后一个注释-正则表达式/^\d+(?:\.\d)?$/
是相当简化的。我怀疑这足以满足您的目的,但是我认为值得解释。正则表达式将不允许其他可能有效的输入,例如-2
或+1.2
或1.1e10
-所有这些都可以正确地解析为JavaScript数字格式,甚至可能对于您的代码,但是将被拒绝。有关更全面的浮点数正则表达式,请check the brilliant writeup on the Regular-Expressions.info website。
答案 1 :(得分:-1)
您可以使用gradeInput.toPrecision(1) === gradeInput
来验证输入
文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toPrecision