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) )