Javascript 带有jquery和test()的正则表达式整数无法正常工作

Javascript 带有jquery和test()的正则表达式整数无法正常工作,javascript,jquery,regex,Javascript,Jquery,Regex,正则表达式:/^[1-9][0-9]*$/ regexp在上按预期工作 我的问题是,当使用JS实现时,它不起作用,请参见上的我的代码 JS: $("#mytextbox").on("keypress", function(event) { var re = /^[1-9][0-9]*$/; var key = doKey(arguments[0] || window.event); var char = String.fromCharCode(key); if (key == 8 || ke

正则表达式:
/^[1-9][0-9]*$/

regexp在上按预期工作

我的问题是,当使用JS实现时,它不起作用,请参见上的我的代码

JS:

$("#mytextbox").on("keypress", function(event) {

var re = /^[1-9][0-9]*$/;
var key = doKey(arguments[0] || window.event);
var char = String.fromCharCode(key);

if (key == 8 || key == 37 || key == 39 || re.test(char)) {
    return true;
}

return false;
});

$('#mytextbox').on("paste",function(e)
{
e.preventDefault();
});

function doKey(event) {
var key = event.keyCode | event.charCode;
return key;
}
预期的测试用例:
0001失败

11 11失败

1000成功

1264成功

5001成功

我的代码发生了什么:
0001工作失败

11 11工作失败

1000成功不起作用

1264成功工作

5001成功不工作

由于某些原因,将无法输入0。我已经在chrome上试过了,但没有成功。我尝试过多次更改我的RegExp,但没有得到不同的结果。我还尝试了不同的代码实现,但仍然没有成功


在发布您的答案之前,请查看是否可以在我的JSFIDLE上使用它。谢谢

当您可能真的想要匹配文本框的内容+字符时,您只需要对照正则表达式检查单个字符(最新的一个)。这使得根本不可能输入零,因为它总是与
^[1-9]
匹配

匹配现有的文本框值+字符应能更好地工作

if(key==8 | | key==37 | | key==39 | |
重新测试(document.getElementById(“mytextbox”).value+char)){
返回true;
}

正如@Joachim Isaksson提到的,您只查看最后一个字符,因此您的正则表达式是错误的。将regex更新为:

var re = /^[0-9]$/;

这将匹配一个数字,0-9。

编辑以下代码即可


非常感谢!现在我觉得自己太笨了,以至于我又看了一遍我的代码。我想我比我想象的更累了。非常感谢!我不希望我的第一个数字是0:P
var testString=$('#mytextbox').val();
    if (key == 8 || key == 37 || key == 39 || re.test(testString + char) )