因此,我想将输入字段限制为仅允许数字和连字符。我对改变我的方法不感兴趣,但想了解为什么我的正则表达式匹配数字而不匹配连字符。
正则表达式:
/[^0-9-]/g
jsFiddle:http://jsfiddle.net/abriggs/7G6JD/
最佳答案
问题出在 -
的键码上,
但是
String.fromCharCode(189)
是 ½
String.fromCharCode(109)
是 m
您可以使用以下代码:
function numbersOnly(number, allowDash) {
// Filter non-digits/dash from input value.
console.log(number);
if (allowDash) {
number = number.replace(/[^0-9\-]/g, '');
} else {
// Filter non-digits from input value.
number = number.replace(/\D/, '');
}
return number;
}
$(function(){
// Do not allow non-numeric characters in bill zip code
$('#billZip').keydown(function(e) {
console.log(e.keyCode);
if (e.keyCode != 8 && e.keyCode != 37 && e.keyCode != 39) {
if(e.keyCode ===189||e.keyCode ===109)
if (numbersOnly(String.fromCharCode(45), true) != "")
return true;
else
return false
if (numbersOnly(String.fromCharCode(e.which), true) != "")
return true;
else return false
}
});
});
关于javascript - jQuery 正则表达式可以匹配数字,但不能匹配连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21187889/