JavaScript RegEX测试不起作用

时间:2016-07-05 08:18:49

标签: javascript regex

我想检查输入文本(金额)是否在1-100之间,但正则表达式测试不起作用。

这是我的JS代码

<script type="text/javascript" >    

    console.log(document.getElementById("amount").value); // 222

    var regex = /^(100)|[1-9]\d?$/;
    if(regex.test(document.getElementById("amount").value))
    {
        alert('validated')
    }
    else
        alert('error')

</script>

4 个答案:

答案 0 :(得分:4)

  1. 将代码包裹在DOMContentLoaded事件回调
  2. 不要使用RegEx。使用比较运算符
  3. <强>代码:

    document.addEventListener('DOMContentLoaded', function () {
        // Get the value & convert it into Number
        var value = parseInt(document.getElementById('amount').value, 10);
    
        // Value between 0 & 100
        if (value > 0 && value <= 100) {
            alert('Valid');
        } else {
            alert('Error');
        }
    });
    

答案 1 :(得分:1)

使用Number函数或<script type="text/javascript" > var amount = Number(document.getElementById("amount").value); // 222 alert ((amount > 0 && amount <= 100)? 'Valid' : 'Invalid'); </script> 构造函数来执行这样一个简单的验证就足够了:

{{1}}

答案 2 :(得分:0)

如果你真的想使用正则表达式,这应该有效:

/^100$|^[1-9]\d?$/

它不允许例如09,但也许可以。

答案 3 :(得分:0)

    <html>
    <head>

    <script>

    function validateValue()
    {
    var amount = document.getElementById('testId').value;
    if((isNaN(amount ))){
    document.getElementById("errorId").style.display= "";
    }
    else
    {
    if(amount>100){
    document.getElementById("errorId").style.display= "";
    }
    else
    {
    document.getElementById("errorId").style.display= "none";
    }
    }
    }

    </script>

    </head>
    <body>

    Enter 1 to 100:<input type="text" onkeyup="validateValue()"         id="testId"/>
    <span id="errorId" style="color:red;display:none"> Not a valid amount</span>
    </body>
    </html>