【问题标题】:How can I catch invalid user input in JavaScript?如何在 JavaScript 中捕获无效的用户输入?
【发布时间】:2021-04-14 02:39:01
【问题描述】:

它检查数字是否更大或更小,以及用户是否通过输入"q" 退出。但它不会捕获像"&, *, (, p, ]""while(!guess)" 这样的无效输入。

let guess = window.prompt('guess the number!');
const rand = Math.floor(Math.random() * 10) + 1;
let tries = 0;
while (!guess) {
  let guess = parseInt(prompt('enter a valid number'));
}

while (parseInt(guess) !== rand) {
  tries += 1;
  if (guess === 'q') {
    console.log('you have exited');
    break;
  }
  if (guess < rand) guess = prompt('enter higher!');
  else guess > rand;
  guess = prompt('enter lower!');
}

console.log(`correct number is : ${rand} and it took you ${tries} tries`);

【问题讨论】:

  • 可能是因为您没有将初始猜测转换为整数。 "&" 的值是一个非空字符串,因此是真值,这意味着将跳过第一个 while 循环。

标签: javascript


【解决方案1】:

您可以在每个条件之间使用 else if。你最后的 else 会是这样的,'按下了无效的键。再试一次。'

if (guess === 'q') {...} else
if (parseInt(guess) < rand) {...} else
if (parseInt(guess) > rand {...}
else guess = prompt('Invalid key entered. Please try again.');

【讨论】:

    【解决方案2】:

    您可以比较guess 的值,看看它是否与使用正则表达式的任何特殊字符匹配String.test

    while (!guess || /[&*()\[\]p]/g.test(guess)) {
      let guess = prompt('enter a valid number');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      • 2011-01-16
      • 2022-07-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多