用于十进制验证的Javascript正则表达式无效

时间:2013-11-14 13:35:02

标签: javascript asp.net

<script type="text/javascript">    
function allowDecimal(txt) {
        var theEvent = txt.htmlEvent || window.event;
        var key = theEvent.keyCode || theEvent.which;
        key = String.fromCharCode(key);
        var regex = /^\d*[0-9](|.\d*[0-9]|)*$/;

        if (!regex.test(key)) {
            theEvent.returnValue = false;
            if (theEvent.preventDefault)
                theEvent.preventDefault();
        }
    }

<asp:TextBox ID="txt" runat="server" onkeypress="allowDecimal(this);"></asp:TextBox>

这不允许输入.,所以有人可以帮我解决错误

3 个答案:

答案 0 :(得分:1)

试试这个正则表达式

  <script type="text/javascript">    
   function allowDecimal(txt) {
    var theEvent = txt.htmlEvent || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /^\d*\.?\d*$/;

    if (!regex.test(key)) {
        theEvent.returnValue = false;
        if (theEvent.preventDefault)
            theEvent.preventDefault();
    }
}
</script>

答案 1 :(得分:0)

你也可以这样写,没有任何正则表达式只进行一次十进制验证:

var str = "hello.world"
var str2 = str.split(".");
var validate = str2.length;
if(validate != 1){
   alert("Decimal present");
}
else{
   alert("No decimal found");
}

答案 2 :(得分:0)

var decimal=/^[+-]?(\d+(\.\d+)?|\.\d+)$/;

这匹配(可选)标志,

后跟任意数字的数字,带有可选的小数点后跟数字

或小数点后跟数字。