要求是这样的有一个字符串数字(信用卡卡号)
1111222233334444
用户会输入这样的一串卡号为了展示方便我想在输入的时候检测,如果是输入了4个数字后做一次处理,增加一个短横线“-”
比如
最终结果是:1111-2222-3333-4444
那在我输入的时候我会动态的用这个正则表达式去检测第一步:把原有的“-”全部先干掉
第二步:根据正则表达式重新按4位插入“-”这样做的好处就是在输入的过程中用户可以进行任意修改,修改后自动的重新按4位隔开
小弟正则表达式不熟,请教高手

解决方案 »

  1.   

    <input type="text" id="test" onkeyup="a(this)"/>
    function a(o)
    {
       var c=o.value.replace(/[\-]/g,'');//获取原始输入内容
       o.value=c.length>0?c.match(/[\d]{4}|[\d]{1,}/g).toString().replace(/[\,]/g,'-'):c;
    }
      

  2.   

     <input id="Text1" type="text" onkeypress="return IsNum(event)" />
        <script language="javascript" type="text/javascript">
            function IsNum(e) {
                var k = window.event ? e.keyCode : e.which;
                if (((k >= 48) && (k <= 57)) || k == 8 || k == 0) {
                    var t = $("#Text1").val();
                    t = t.replace(/\-/g, "");
                    t = t.replace(/(\d{4})/g, "$1-");
                    $("#Text1").val(t);
                } else {
                    if (window.event) {
                        window.event.returnValue = false;
                    }
                    else {
                        e.preventDefault(); //for firefox 
                    }
                }
            } 
        </script>