jquery中正十进制值和-1值的正则表达式如何? 我设法用它做正负十进制值,但它只能是-1。有什么想法吗?
$(".SermeCoopValidarTope").keypress(function (e) {
var tecla = (document.all) ? e.keyCode : e.which;
var numeroDecimal = $(this).val();
if (tecla == 8) return true;
if (tecla > 47 && tecla < 58) {
if (numeroDecimal == "") return true
regexp = /^([0-9])*[.]?[0-9]{0,1}$/;
return (regexp.test(numeroDecimal))
}
if (tecla == 46) {
if (numeroDecimal == "") return false
regexp = /^[0-9]+$/
return regexp.test(numeroDecimal)
}
return false
});
答案 0 :(得分:2)
使用带有两个匹配表达式的|
来测试/或匹配。
我还根据当前值和新的按键重新编写代码来构造期望值。这大大简化了代码。
$(".SermeCoopValidarTope").keypress(function (e) {
var tecla = (document.all) ? e.keyCode : e.which;
var numeroDecimal = $(this).val();
// Allow backspace
if (tecla == 8) return true;
// if it's a valid character, append it to the value
if ((tecla > 47 && tecla < 58) || tecla == 45 || tecla == 46) {
numeroDecimal += String.fromCharCode(tecla)
}
else return false;
// Now test to see if the result "will" be valid (if the key were allowed)
regexp = /^\-1?$|^([0-9])*[.]?[0-9]{0,2}$/;
return (regexp.test(numeroDecimal));
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/Ld3n4b56/
更新以支持,
而不是.
小数分隔符:
$(".SermeCoopValidarTope").keypress(function (e) {
var tecla = (document.all) ? e.keyCode : e.which;
var numeroDecimal = $(this).val();
// Allow backspace
if (tecla == 8) return true;
// if it's a valid character, append it to the value
if ((tecla > 47 && tecla < 58) || tecla == 45 || tecla == 44) {
numeroDecimal += String.fromCharCode(tecla)
}
else return false;
// Now test to seee of the result will be valid
regexp = /^\-1?$|^([0-9])*[,]?[0-9]{0,2}$/;
return (regexp.test(numeroDecimal));
});
JSFiddle: http://jsfiddle.net/TrueBlueAussie/Ld3n4b56/1/
RegEx的缩短版本(感谢@Brian Stephens):
句点小数分隔符:http://jsfiddle.net/Ld3n4b56/4/
/^(-1?|\d*.?\d{0,2})$/
逗号小数点分隔符:http://jsfiddle.net/Ld3n4b56/3/
/^(-1?|\d*,?\d{0,2})$/
答案 1 :(得分:1)
您可以使用|
(或运营商):
/^([0-9]+|-1)$/ or simply /^(\d+|-1)$/
另外,我建议您将正则表达式/^([0-9])*[.]?[0-9]{0,1}$/
更改为
/^([0-9])*(\.[0-9])?$/ or simply /^\d*(\.\d)?$/
使其更有意义且不允许123.
(以点结尾)或仅.