【问题标题】:how to resolve the bug in the decimal validation code?如何解决十进制验证码中的错误?
【发布时间】:2013-04-11 14:17:57
【问题描述】:

它将适用于 21.22 或 1.11 之类的...... 但错误是它允许点在数字前面,并且允许多个点,例如 123.2.2

<HTML>
<HEAD>
    <script type="text/Javascript">
function testNum(inval)
{
 var ex = /^\d*(?:\.\d{0,2})?$/;
 if(ex.test(inval.value)==false){
   inval.value = inval.value.substring(0,inval.value.length - 1);
  }
}
</script>  </HEAD>   <BODY>
 <input type="text" id="" onkeyup="testNum(this);" />
</BODY>
</HTML>

【问题讨论】:

  • 前面一个点有什么问题?顺便说一句,您编写了正则表达式 :-) 另外,我看不出这将如何匹配 123.2.2。

标签: javascript regex dom


【解决方案1】:

将\d* 更改为\d+(+ 相当于{1,})确保在您的点前至少有一位数字。

至于多点问题,不,它不匹配多个点。

另外,您可能想将您的\d{0,2} 更改为\d{1,2},例如匹配12 并没有任何意义。

【讨论】:

    【解决方案2】:

    我似乎不允许使用多个点,但 \d* 表示起始数字是可选的。

    /^\d+(?:\.\d{0,2})?$/
    

    【讨论】:

    • 它会在输入数字后允许点,例如 123.11 是初始值,之后当我将光标移动到数字的第一个位置时,例如 .123.11 它允许这是问题
    • @MarirajSankar 好的,但我提供给你的表达方式不允许
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    相关资源
    最近更新 更多