需要控制一个文本框的输入,范围是-0.5到0,保留1位小数。
也就是说可以输入的是  -0.5 -0.4 -0.3 -0.2 -0.1 0 六种情况。请问用怎样的正则表达式限制?

解决方案 »

  1.   


    <script>
        function test(){
            var str=document.getElementById("txt").value
            var reg=/^-0.[1-5]{1}$/;
            alert(reg.test(str))
        }
    </script>
    <input type="text" id="txt"><input type="button" value="test" onclick="test()">
      

  2.   

    BeenZ您好,谢谢您的答复,我的需求是要能够在KeyDown的时候判断。
    也就是允许用户输入 -0.5 -0.4 -0.3 -0.2 -0.1 0的六种数字。
    使用您提供的正则表达式如下,不能达到目标。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script>
        function regInput(obj, reg, inputStr) {
            var docSel = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT") return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
            return reg.test(str)
        }
    </script>
    <input type="text" id="txt" onkeypress = "return regInput(this,/^-0.[1-5]{1}$/,String.fromCharCode(event.keyCode))"><input type="button" value="test" onclick="test()"></body>
    </html>
    我将代码改为如下,还是不行。请指点。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script>
        function regInput(obj, reg, inputStr) {
            var docSel = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT") return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length)
            return reg.test(str)
        }
    </script>
    <input type="text" id="txt" onkeypress = "return regInput(this, /^-{1}|(-0){1}|(-0.){1}|-0.[1-5]{1}$/, String.fromCharCode(event.keyCode))"><input type="button" value="test" onclick="test()"></body>
    </html>
      

  3.   

    搂主的问题有意思,既然是你要判断每个输入的时候,控件的动作,就必须判断每种可能性。给你个解决方案。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script>
       function regInput(obj, reg, inputStr) {
            var docSel = document.selection.createRange();
            if (docSel.parentElement().tagName != "INPUT") return false;
            oSel = docSel.duplicate();
            oSel.text = "";
            var srcRange = obj.createTextRange();
            oSel.setEndPoint("StartToStart", srcRange);
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
            return reg.test(str);
        }    function test(){
            var str=document.getElementById("txt").value
            var reg=/^-0\.[1-5]{1}|0$/;
            alert(reg.test(str))
        }</script>
    <input type="text" id="txt" onkeypress="return regInput(this, /^(-|-0|-0\.|-0\.[1-5]{1}|0)$/, String.fromCharCode(event.keyCode))"><input type="button" value="test" onclick="test()"></body>
    </html>
      

  4.   

    每次输入你都要判断的话<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Untitled Page</title>
    </head>
    <body>
    <script>
        function regInput(obj, reg, inputStr) {
            var docSel = document.selection.createRange()
            if (docSel.parentElement().tagName != "INPUT") return false
            oSel = docSel.duplicate()
            oSel.text = ""
            var srcRange = obj.createTextRange()
            oSel.setEndPoint("StartToStart", srcRange)
            var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
            return reg.test(str)
        }
    </script>
    <input type="text" id="txt" onkeypress    = "return regInput(this,/^-$|^-0$|^-0.$|^-0.[1-5]{1}$|^0$/,String.fromCharCode(event.keyCode))"><input type="button" value="test" onclick="test()"></body>
    </html>