我想要一个文本框的正则表达式,它只允许 3 位数字并通过以下条件:
- 仅限数字(234 或 123)或
- 最后只有一位小数 (55.1)
- 不应留有空格
- 如果使用小数,则小数点后/前还应该有一个数字(不允许使用 555. 或 12. 或 .12)
我有以下 RE,部分有效:
/^\d{0,3}$|^\d{0,2}[\.]\d{1}$/
有修改这个的帮助吗?
看起来问题是额外的:
我在按键时使用代码。因此它会在按键时验证每个按下的值。
if (window.event) {
knum = e.keyCode;
}
else if (e.which) {
knum = e.which;
}
kchar = String.fromCharCode(knum);
numcheck = /^\d{0,3}$|^\d{0,2}[\.]\d{1}$/;
alert(numcheck.test(kchar));
对于任何十进制按键,它都会返回 false。即使我输入 55,然后尝试在中间使用小数使其变为 5.5,ite 也会返回 false。
最佳答案
您至少需要 1 位数字,但最多 3 位:\d{1,3}
或者
小数点前至少 1 位但不超过 2 位,小数点后 1 位:\d{1,2}[.]\d
所以这些组合起来:/(^\d{1,3}$|^\d{1,2}[.]\d$)/
更新:
您正在测试在按键事件上添加的字符,而不是输入字段的完整值。这永远不会达到预期的结果。
document.getElementById("yourfield").onkeyup = function(e) {
// the event
if (!e) e = window.event;
// determine the target of the keyup event (the input field)
var targ;
if (e.target)
targ = e.target;
else if (e.srcElement)
targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
// get the value
kchar = targ.value;
numcheck = /^\d{0,3}$|^\d{0,2}[\.]\d{1}$/;
// test
alert(numcheck.test(kchar));
}
关于javascript - Javascript 中带小数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756227/