我正在尝试查找仅允许数字0-9而不是特殊字符的RegEx。这是不可能的,因为按Shift + 2仍然是一个数字?
我使用了以下内容:
return /[0-9]|\./.test(String.fromCharCode(event.keyCode));
除了仍然允许的特殊字符外,其他工作正常。
任何输入都会非常有用。
答案 0 :(得分:4)
我认为你走在正确的轨道上。只需添加!event.shiftKey
:
return /[0-9]|\./.test(String.fromCharCode(event.keyCode)) && !event.shiftKey;
如果您需要,还有altKey
和ctrlKey
。
对于来自数字小键盘的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);
答案 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) );
你在做什么呢?