【发布时间】:2012-08-01 09:20:14
【问题描述】:
我想要一个文本框的正则表达式,它只允许 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。
【问题讨论】:
-
只需将您的 {0,2} 更改为 {1,2},但我觉得其他一切都很好。什么不起作用?
-
为了清楚起见:您正在检查一个字符串,根据定义,长度为 1 个字符:
String.fromCharCode(knum),为什么要匹配最多允许 4 个字符的模式? -
这样他们就不会在复选框中输入不需要的字符。因此,当我只有数字( /\d/ )时,代码运行良好。我将其更改为包含小数,并意识到它不起作用。这是修改了我的问题并提供了代码。
-
您需要将 kchar 与 /[0-9.]/ 进行匹配。在他们使用以下正则表达式之一完成输入后,您必须检查整体有效性。否则,他们会输入类似 55 的内容。您会在他们到达最后一位之前阻止他们。
标签: javascript regex