1

我有以下代码,它只允许数字 0-9。
但我也想允许 -(hyphon)。[- ASCII 码是 45]
我试过了.. 但没用.. 你能更新我的代码吗?

函数 isNumericKey(e)
        {
        if (window.event) { var charCode = window.event.keyCode; }
        else if (e) { var charCode = e.which; }
        否则 { 返回真;}
        if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; }
        返回真;
    }
    函数 submitMyNumber()
    {
        var input = document.getElementById('myInput').value;
        返回 input.match(/^[0-9-]+$/) != null;
    }

<form> <input type="text" id="myInput" name="myInput" onkeypress="return isNumericKey(event);" /><br /> <input type="submit" id="mySubmit" name="mySubmit" value="Submit My Number" onclick="return submitMyNumber();" /> </form></pre>

拉克斯曼乔达里

4

2 回答 2

0

如果您想接受 29-06-2012 即 2 个数字连字符 2 个数字连字符 4 个数字,这是日期模式,则正则表达式是[0-9]{2}-[0-9]{2}-[0-9]{4}

于 2012-06-28T07:14:53.893 回答
0

看来您过滤了 45 charcode

 function isNumericKey(e)
        {
        if (window.event) { var charCode = window.event.keyCode; }
        else if (e) { var charCode = e.which; }
        else { return true; }
        if (charCode == 45 || (charCode >= 48 && charCode <= 57)
           return true;
        else
           return false;
    }

会更好地工作。

在正则表达式中指定范围时以连字符开头。

 /^[-0-9]+$/
    ^-- here

 /^[0-9-]+$/
       ^--- does not work here 

如果您想匹配日期,则该模式可能类似于 dd-dd-dd (但哪种格式?ISO YYYY-MM-DD ?或其他)更正确的模式将是。

 /^\d{4}-\d{2}-\d{2}$/

应该是这个更好

 /^[12]\d{3}-[01]\d-[0-3]\d$/

对于 DD-MM-YYYY 恢复模式非常简单:

 /^[0-3]\d-[01]\d-[12]\d{3}$/
于 2012-06-28T06:45:56.873 回答