就是写一个前17位是数字,第十八位是字母x的正则表达式(/[^\d]/g,'') 这个是什么意思?

解决方案 »

  1.   

    \d是数字 [^\d]非数字replace(/[^\d]/g, '');将非数字的全部删除(替换为空)。
      

  2.   

    function limit_value(obj)
    {
      if(obj.value=="") return;
      else{
        if(obj.value.length<18)
           obj.value=obj.value.replace(/[^\d]/g,'');
        else 
           obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^A-Za-z]/,'');
      
       }
    }<input type="text" onkeyup="limit_value(this)" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"  maxlength="18">
      

  3.   

    上面的少了。
    改成下面的:(刚才的少了数字)
    obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^0-9A-Za-z]/,''); 
      

  4.   


    obj.value=obj.value.substr(0,17)+obj.value.substr(17,18).replace(/[^x]/,'');
      

  5.   

    test:
    <input type="text" onkeyup="chk(this)" value="12345678901234567" />
    <script>
    function chk(obj){
    var val = obj.value, num = val.replace(/^(\d{0,17}).*$/,'$1');
    num<17 ? obj.value = num : obj.value = num + val.slice(17,val.length).replace(/^((?:\d|[a-zA-Z])*).*$/,'$1');
    }
    </script>
      

  6.   

    如果第18位是小写的x就转换为大写的X,如果是非x或者X就转换为空。又怎么写呢?
      

  7.   

    如果输入非X和数字就转换为空
    replace(/[^X0-9]/,'')
    如果输入小写x就转换为答谢X
    replace(/[^x]/,'X')我想把上面两条语句合为一条replace(/[^X0-9]/,'';/[^x]/,'X')
      

  8.   

    function limit_value(obj) 

      if(obj.value=="") return; 
      else{ 
      if(obj.value.length <18) 
          obj.value=obj.value.replace(/[^\d]/g,''); 
       if(obj.value.length==18&obj.value.substr(17,1)=="x") 
           obj.value=obj.value.substr(0,17)+'X';
      
      else 
        obj.value=obj.value.substr(0,17)+obj.value.substr(17,1).replace(/[^X0-9]/,'');
      
      } 
    }
    这样就可以了,哈哈