[英]Regular Expression in Javascript for number with decimal
我想要一个仅允许3位数字并通过以下条件的文本框正则表达式:
我有以下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));
}
尝试/^\\d{1,3}|(\\d{1,2}\\.\\d)$/
?
您的字符类不应转义句号,因此应为[.]
,尽管我更喜欢只写\\.
因为为一个角色创建一个类很浪费。 同样,当\\d
表示完全相同的内容时, \\d{1}
是多余的。 我还假设您也不想允许使用空文本框,所以我写了一些允许1-3位数或1-2位数的句点,然后再增加一个数字的东西。 如果那是错误的,则可以将第一个\\d
的范围更改回{0,3}
,这将允许一个文本框完全不包含任何内容。
使用此re:
/^\d{1,3}$|^\d{1,2}[.]\d$/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.