Javascript RegEx仅限数字(无特殊字符)

时间:2012-03-14 18:17:34

标签: javascript regex

我正在尝试查找仅允许数字0-9而不是特殊字符的RegEx。这是不可能的,因为按Shift + 2仍然是一个数字?

我使用了以下内容:

return /[0-9]|\./.test(String.fromCharCode(event.keyCode));

除了仍然允许的特殊字符外,其他工作正常。

任何输入都会非常有用。

4 个答案:

答案 0 :(得分:4)

我认为你走在正确的轨道上。只需添加!event.shiftKey

即可
return /[0-9]|\./.test(String.fromCharCode(event.keyCode)) && !event.shiftKey;

如果您需要,还有altKeyctrlKey

对于来自数字小键盘的keyCode,您需要与数字keyCode进行比较,而不是使用正则表达式:

return (/[0-9]|\./.test(String.fromCharCode(event.keyCode)) && !event.shiftKey) 
    || (event.keyCode >= 96 && event.keyCode <= 105);

也可以使用此技术代替您正在使用的正则表达式:

return (event.keyCode >= 48 && event.keyCode <= 57 && !event.shiftKey) 
    || (event.keyCode >= 96 && event.keyCode <= 105);

请参阅http://unixpapa.com/js/key.html

答案 1 :(得分:0)

我认为/[0-9]/应该像你说的那样工作。它不会匹配“shift-2”,只会匹配确切的字符0,1,2,...,9。我认为RE的|\.部分会伤害到你...

答案 2 :(得分:0)

你试过这个吗?

"^[0-9]+$"

答案 3 :(得分:0)

我看到的一个问题是keyCode可能是多个数字,但你的正则表达式只是一个数字后跟一个句点。也许这个:

return /\d+/.test( String.fromCharCode(event.keyCode) );

你在做什么呢?