我对文本框进行了一些客户端验证,它只允许最多两个小数位的数字而没有其他输入.
此脚本仅用于输入数值,但需要进行调整以使其可以采用小数点后跟最多两位小数.
我尝试过这样的事情/[^\d].\d{0,2},但是替换电话不起作用,我不知道怎么做.
<script type="text/JavaScript">
function valid(f) {
if (!/^\d*$/.test(f.value)) {
f.value = f.value.replace(/[^\d]/g,"");
alert("Invalid number");
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我需要匹配一个空字符串.如果提供了空字符串并且提交了表单,则该值默认为零.
Ant*_*nes 15
的.字符在RegEx中具有特殊含义,因此需要转义.
/^(?:\d*\.\d{1,2}|\d+)$/
Run Code Online (Sandbox Code Playgroud)
这匹配123.45,123.4,123和.2,.24但不匹配emtpy字符串,123.,123.456
. 在RegEx中意味着:任何角色,你必须在它前面放一个反斜杠. \.
这会更好:
/^\d+(\.\d{0,2})?$/
Run Code Online (Sandbox Code Playgroud)
我包括的部分:
+,*但是也会匹配空字符串.$代表输入结束.对于替换部分,您还应该包括点
f.value.replace(/[^\d\.]/g, "")
Run Code Online (Sandbox Code Playgroud)
编辑:
如果它是用于输入的实时验证,为什么不直接拦截keyevents并测试它们的有效性(通过在内存中创建字符串)或只删除字段中的最后一个字符?