三元运算符正则表达式编号检查不起作用

问题描述 投票:0回答:1

我正在使用三元运算符来检查用户输入是否是数字。

但是,当我按下复选按钮时,无论输入数字还是字母,都会出现警报:

请输入显示的数字。

这是我的代码:

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num");
      var check = /^[0-9]*$/;
      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

javascript regex conditional-operator
1个回答
1
投票

但是,当我按下复选按钮时,无论输入数字还是字母,都会出现“请输入数字”的提示

这是不正确的。如果我们运行带有数字输入的代码(检查下面的代码片段),它将显示:

您只输入了数字字符!请继续按其他按钮之一。

这是真的。但是,对于字母输入,它也会显示相同的消息:

您只输入了数字字符!请继续按其他按钮之一。

这是错误的。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num");
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

要解决此问题,我们应该首先

console.log()
(检查下面的代码片段)
input
,因为这是我们要检查的:

<input type="text" id="num" style="font-size: 40px"></input>

输出是

<input>
元素的类型和属性,但我们想要捕获
input
的值。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num");
      console.log(input);
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

要捕获该值,我们可以这样做:

var input = document.getElementById("num").value;

因此,当我们再次

console.log()
(检查下面的代码片段)
input
时,我们将得到我们想要的:

12345

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      console.log(input);
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

但是,代码(检查下面的代码片段)现在表现出意外。输入数字会显示:

请仅输入数字!

输入字母后会显示:

您只输入了数字字符!请继续按其他按钮之一。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      var check = /^[0-9]*$/;

      !check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

行为在某种程度上被逆转了。这就是为什么我们需要删除逻辑 NOT 运算符:

check.test(input)

现在,代码(检查下面的代码片段)可以按预期工作。

<body>
  <label style="font-size: 40px">Please Enter A Number Here: </label>

  <input
    type="text"
    id="num"
    style="font-size: 40px"
  />

  <button
    type="button"
    onclick="check()"
  >
    Check
  </button>

  <script>
    function check() {
      var input = document.getElementById("num").value;
      var check = /^[0-9]*$/;

      check.test(input)
        ? window.alert(
            "You have only entered numeric characters! Please proceed to press one of the other buttons."
          )
        : window.alert("Please enter only numbers!");
    }
  </script>
</body>

© www.soinside.com 2019 - 2024. All rights reserved.