Javascript 仅用于字符0-9的正则表达式?

Javascript 仅用于字符0-9的正则表达式?,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试为字符0-9查找/使用正则表达式。如果可能的话,我还尝试让用户使用他们的普通键(backspace、左箭头和右箭头、backspace) 另外,我想停下来。(期间),%(百分比)和(单引号) 到目前为止,这就是我所拥有的,但它并没有阻止上述三个问题: function onlyNumbers(evt) { var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.

我正在尝试为字符0-9查找/使用正则表达式。如果可能的话,我还尝试让用户使用他们的普通键(backspace、左箭头和右箭头、backspace)

另外,我想停下来。(期间),%(百分比)和(单引号)

到目前为止,这就是我所拥有的,但它并没有阻止上述三个问题:

function onlyNumbers(evt) {
        var theEvent = evt || window.event;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode( key );
        var regex = /[0-9]/;
        //alert(theEvent.keyCode)
        if( !regex.test(key) && theEvent.keyCode!='8' && theEvent.keyCode!='46'&& theEvent.keyCode!='37' && theEvent.keyCode!='39') {//keyCode8 = backspace
            theEvent.returnValue = false;
            if(theEvent.preventDefault) theEvent.preventDefault();
        }
    }

您应该使用
|
而不是
&&


您也可以使用正则表达式
[^.%']
。它匹配除
%

之外的任何字符。您应该使用
|
而不是
&


您也可以使用正则表达式
[^.%']
。它匹配除
%
”之外的任何字符。
我将使用一个允许的键码数组并检查:

function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;

    // 0-9, backspace, left and right arrows
    var allowedKeyCodes = [48,49,50,51,52,53,54,55,56,57,8,37,39]; 

    if(allowedKeyCodes.indexOf(key) === -1) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

我将使用一组允许的密钥码,并检查:

function onlyNumbers(evt) {
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;

    // 0-9, backspace, left and right arrows
    var allowedKeyCodes = [48,49,50,51,52,53,54,55,56,57,8,37,39]; 

    if(allowedKeyCodes.indexOf(key) === -1) {
        theEvent.returnValue = false;
        if(theEvent.preventDefault) theEvent.preventDefault();
    }
}

如果必须这样做,您的用户体验会出现严重问题。这是否绑定到按键、键向上或键向下处理程序?您正在发送混合信号。标题是“1到9”,但问题是“0-9”,这是什么?你的标题与问题的第一行冲突。你的regexp应该是
/^[0-9]$/
(上面写着“仅以数字开头和结尾”)。如果你必须这样做,你的用户体验会出现严重问题。这是否绑定到按键、键控键控,还是按键处理程序?你在发送混合信号。标题是“1到9”,但问题是“0-9”,这是什么?你的标题与问题的第一行冲突。你的regexp应该是
/^[0-9]$/
(它说,“仅以数字开头和结尾”)