检测数据格式

来源:互联网 发布:淘宝网新手开店入门 编辑:程序博客网 时间:2024/06/08 00:23

原来用的是简单的JS来检测数据格式
//數字Check,輸入的是否為數字,空字串不管
 function Numcheck(Txt){
   var st=Txt.value;
   var validDT=false;


   if (st=='') return;

   if (isNaN(parseFloat(st))) {
       alert('您輸入的並非數字,請重新輸入!');
       Txt.focus();
       return;
   }
 }

这个是借助JS的基本函数来实现,后来发觉这样子有bug,假如用户输入1.202abuxx,parseFloat会截取为1.202,然后isNaN为false,表示是数字
于是打算修改用正则表达式,我downlaod了asp版的关于正则表达式的FAQ,捣鼓了几天(因为以前从来没有用过,
现在我一下子似乎也读不懂是什么是正则表达式),给我最大帮助的是csdn的一篇:正则表达式使用详解(一),说的比较易懂,然后我就按照我的一个
javascript语法电子书关于test的描述,受益不浅!
刚开始用的是vbs:
Function RegExpTest(patrn, strng)
  Dim regEx, retVal       
  Set regEx = New RegExp        
  regEx.Pattern = patrn       
  regEx.IgnoreCase = False       
  retVal = regEx.Test(strng)
   MsgBox(retVal)   
  If retVal Then
 MsgBox("yes") 
  Else
  MsgBox("no")
  End If
 
End Function
很可惜,我写的vbs没有成功
于是我决定还是用js,我当初要用vbs因为我想用MS的东西,这样应该容易接受,不过我只习惯用js

最后写成:
function chkFloat(objNam,Negative){ //objNam:頁面物件名稱,Negative:0可以為負,1不能為負
  var reg,objVal;
      //objVal=document.all(objNam).value;
    objVal = objNam.value;
  if(objVal != ''){
      if (Negative==0){
      reg = /^-?/d+(./d+)?$/;
   }
   else{
  reg = /^/d+(./d+)?$/;
   }
   //^:表示匹配模式必須出現在目標對象的開頭;
   //-?:出現0次或者一次,和^結合表示如果是有-,要出現在開頭,沒有-?的就是表示不能為負數喔
   ///d+:表示是數字,一個數字或者多個
   //(./d+)?:如果要出現.號必須和數字一起出現,後面加個問號,表示必須出現零次後者一次
   //$:表示匹配模式必須出現在目標對象的結尾
   if(reg.test(objVal) ==false){
        alert("請檢查輸入數字格式!");
     objNam.focus();
     return;
   }
  }
}

function chkInt(objNam,negative) //objNam:頁面物件名稱,Negative:0可以為負,1不能為負
 {
 alert(parseFloat('12.002d2'));
    var reg,objVal;
      //objVal=document.all(objNam).value;
    objVal = objNam.value;
    var reg;
 if(objVal != ''){
  if(negative==0)
  {
     reg = /^-?/d+$/;
     //^:表示匹配模式必須出現在目標對象的開頭;
     //-?:出現0次或者一次,和^結合表示如果是有-,要出現在開頭,沒有-?的就是表示不能為負數喔
    ///d+:表示是數字,一個數字或者多個
    //$:表示匹配模式必須出現在目標對象的結尾
  }
  else
  {
     reg = /^/d+$/; //同上解釋,只是開頭不能出現-號,即不能為負數
  }
  
  if(reg.test(objVal) ==false){
      alert("請檢查輸入數字格式!");
      objNam.focus();
      return;
   }
  }
 }

然后调用:
  <input type="text" name="textfield1" onblur="chkInt(this,1)">
  <input type="text" name="textfield2" onblur="chkFloat(this,0)">

如果用在页面上面检测,那么这2个应该够用了

这是我第一次写正则表达式

原创粉丝点击