我有以下代码,只允许数字0-9
但是我想允许 - (hyphon)。[ - ASCII码是45]
我试过了..但是没用..你能更新我的代码吗?
function isNumericKey(e)
{
if (window.event) { var charCode = window.event.keyCode; }
else if (e) { var charCode = e.which; }
else { return true; }
if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; }
return true;
}
function submitMyNumber()
{
var input = document.getElementById('myInput').value;
return 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>
Laxman Chowdary
答案 0 :(得分:0)
似乎您过滤了45个字符代码
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}$/
答案 1 :(得分:0)
如果你想接受29-06-2012即2位数连字符2位数连字符4位数是日期模式,正则表达式为[0-9]{2}-[0-9]{2}-[0-9]{4}