RegEx中的Javascript批准号码

时间:2013-11-15 15:22:36

标签: javascript regex

我正在尝试将用户输入的值更改为真实数字(例如15或144.38)。如果它有未批准的字符(例如$,),那么它们应该被删除。此外,如果用户输入具有多个期间的值(例如43.14.14),那么我想清除整个值。我能够做第1步但不能指出第2步,请指教。到目前为止,这是我的代码 http://jsbin.com/otawiVa/1

function myFunction()
{
  var str = document.getElementById("number_field").value;
  var res = str.replace(/[^0-9.}]/g,"");
  document.getElementById("approved_number").innerHTML=res;
}

2 个答案:

答案 0 :(得分:1)

将您的功能更改为

function myFunction()
{
var str = document.getElementById("number_field").value;
var res = str.replace(/[^0-9.}]/g,"");
  if (res.indexOf('.') !== res.lastIndexOf('.')) {
    document.getElementById("approved_number").innerHTML="";
  } else {
   document.getElementById("approved_number").innerHTML=res;
  }
}

此处示例:

http://jsbin.com/UNOHoYek/1

答案 1 :(得分:0)

有关可能的答案,请参阅http://jsbin.com/OKoJuloQ/3/

在不提供反馈的情况下更改用户输入可能不是一个好主意。

最好只处理可以作为数字的内容并报告其余部分。

window.alert只是报告它的一种方式。

重要的位是转换为Number并针对NaN进行测试。

代码(也可通过上面的链接获取)

<!DOCTYPE html>
<html>
<body>
<input type="text" value="" id="number_field">
<button onclick="myFunction()">Submit</button>
<p id="approved_number"></p>
<script>
  function myFunction() {
    try {
      var str = document.getElementById("number_field").value;
      // var res = str.replace(/[^0-9.}]/g,"");
      var res = str;
      if (Number.isNaN(Number(res))) {
        window.alert(res + " is not a number (NaN)\nOnly digits, decimal point,\nand exponent (e.g. 3.2e4) are allowed");
      } else {
        document.getElementById("approved_number").innerHTML=Number(res).toString(10);
      }
    } catch (exception) {
      window.alert(exception);
    }
  }
</script>
</body>
</html>
相关问题