输入什么规则使得我的正则表达式限制只输入整数或double

解决方案 »

  1.   

    function _MaskInput(oInput, sReg, sInputStr)
    {
    var re = new RegExp(sReg);
    var docSel = document.selection.createRange();
    if(docSel.parentElement().tagName.toLowerCase() != "input")
    return false;
    oSel = docSel.duplicate();
    oSel.text = "";
    var srcRange = oInput.createTextRange();
    oSel.setEndPoint("StartToStart", srcRange);
    var str = oSel.text + sInputStr + srcRange.text.substr(oSel.text.length);
    //alert(str);
    //alert(re.test(str));
    return re.test(str);
    }
    // only number
    //bSign can input '-'
    //nInt  length of number front dot   nDec length of number back of dot
    function _SetDigitalInput(oInput,nInt,nDec,bSign)
    {
    if(typeof(bSign) != "boolean")
    bSign = false;
    oInput.style.imeMode = "disabled";
    var sReg = "^";
    if(bSign)
    sReg += "-?(";
    sReg += "\\\\d{1,"+nInt.toString()+"}";
    if(nDec > 0)
    sReg += "(\\\\.\\\\d{0,"+nDec.toString()+"})?";
    if(bSign)
    sReg += ")?";
    sReg += "$";
    oInput.onkeypress = new Function("return _MaskInput(this,'"+sReg+"',String.fromCharCode(event.keyCode))");
    oInput.onpaste = new Function("return _MaskInput(this,'"+sReg + "',window.clipboardData.getData('Text'))");
    oInput.ondrop = new Function("return _MaskInput(this,'"+sReg + "',event.dataTransfer.getData('Text'))");
    }
      

  2.   

    例:
    <input type="text" onkeypress="_SetDigitalInput(this, 5, true, 4);">