随笔-9  评论-21  文章-63  trackbacks-0

一、验证类

1、数字类
1.1 整数
/*********
* signed int
*
*/
function IsInt(str)
{
 if(/^(-|\+)?\d+$/.test(str))
 {
  return true;
 }
 else
 {
  alert("false");
  return false;
 }
}
1.2 正整数 (包含0)
/*********
* unsigned int str >=0
*
*/
function IsUInt(str)
{
 if(/^\d+$/.test(str))
 {
 alert("true");
  return true;
 }
 else
 {
  alert("false");
  return false;
 }
}
1.3字节
function isByte(x)
{
  return (!isNaN(x) && x >= 0 && x <= 255);
}
1.4无符号整数
function isUnsignedInt(x)
{
  return (!isNaN(x) && x > 0 && x <= 65535);
}

1.5 负整数
/*********
* int str <0
*
*/
function Is_Int(str)
{
 if ( /^-\d+$/.test(str))
 {
 alert("true");
  return true;
 }
 else
 {
  alert("false");
  return false;
 }
}
1.6小于等于iMax 整数
/*********
* int str <=iMAX
*
*/
function IntLowMax(str,iMAX)
{
 if ((/^\d+$/.test(str)) && (str <= iMAX))
 {
 alert("true");
  return true;
 }
 else
 {
  alert("false");
  return false;
 }
}
1.7 大于等于iMin整数
/*********
* int str >=iMin
*
*/
function IntHighMin(str,iMin)
{
 if ((/^\d+$/.test(str)) && (str >= iMin))
 {
 alert("true");
  return true;
 }
 else
 {
  alert("false");
  return false;
 }
}
1.8 iMin-iMax 之间的整数
/***********************
* int iMin<=str <=iMax
*
************************/
function IntinMinMax(str,iMin,iMax)
{
 if ((/^\d+$/.test(str)) && (iMin<=parseInt(str)) &&(parseInt(str)<=iMax))
 { 
  return true;
 }
 else
 {
  alert("false!");
  return false;
 }
}
1.9 是十六进制数
function isHexStr(sTest){
 var result = true;
 var m;
 sTest = String(x).replace(/^\s+|\s+$/g,"");
 m = sTest.match(/^([0-9a-fA-F]*)$/);

 if(m == null)
 {
 alert("Is not Hex string!");
 result = false;
 }
 return result;
}
2、字符类
2.1 a-Z或A-Z的字母组成
/***********************
*  just a string a-zA-Z
*
************************/
function IsChar(str)
{
 if (/[^a-zA-Z]/g.test(str))
 {
  alert("nor char!!");
  return false;
 }
 else
 {
  return true;
 }
}
2.2 字母和数字组成
 /***********************
*  just a string a-zA-Z0-9
*
************************/
function IsDigitalChar(str)
{
 if (/[^0-9a-zA-Z]/g.test(str))
 {
  alert("nor char!!");
  return false;
 }
 else
 {
  return true;
 }
}

2.3 由字母和数字,下划线组成.且开头的只能是下划线和字母
/***********************
*  a string a-zA-Z0-9_
*
************************/
function IsDigitalChar_(str)
{
 if (/^([a-zA-z_]{1})([\w]*)$/g.test(str))
 {  
  return true;
 }
 else
 {
 alert("not char!!");
  return false;
 }
}
2.4 字符串替换函数.Replace();

3、网络类
3.1 IP_address 点分十进制表示 (e.g: 172.17.8.1)
function isip(s){
var check=function(v){try{return (v<=255 && v>=0)}catch(x){return false}};
var re=s.split(".");

if( (re.length==4)?(check(re[0]) && check(re[1]) && check(re[2]) && check(re[3])):false)
{
return true;
}
else
{
alert("Invalid IP");
return false;
}
}
3.2 Mask 点分十进制表示( e.g: 255.255.255.0  , not netmask 32, 24 and so on)
function isFF(x)
{
  return (!isNaN(x) && x >= 0 && x <= 255);
}

function isDottedNetmask(s)
{
  s = String(s).replace(/^\s+|\s+$/g,"");//remove space
  var result = s.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
 
  if (result && result.length == 5 &&  isFF(result[1]) && isFF(result[2]) && isFF(result[3]) && isFF(result[4]))
    {
      var last_bit = 1; // accept 255.255.255.255
      var cnt = 0;
      for (var i=1; i <= 4; i++)
      {
        var mask = parseInt(result[i], 10);

        for (var j=7; j >= 0; j--)
        {
          var n = Math.pow(2, j);
         
          var bit_on = (mask & n) ? 1 : 0;
          if (last_bit != bit_on)
          {
            last_bit = bit_on;
            cnt++;    //no change or Just change once,from 1 to 0  : subnet mask
          }
        }
      }
      if(cnt > 1)
      {
       alert("Invalid NetMask");
       return false;
      }
      else
      {
       return true;
      }
    }
 
       alert("Invalid NetMask");
       return false;     
}
3.3 netmask, both isDottedNetmask and netmask, e.g mask32, 24 ...
function isNetmask(s)
{
  if (isDottedNetmask(s))  // isDottedNetmask
  {
    return true;
  }
  s = String(s).replace(/^\s+|\s+$/g,""); //else is netmask like 32, 24
  if (s.match(/[^0-9]/))
  {
    return false;
  }
  var nm = parseInt(s);
  if (isNaN(nm) || nm < 0 || nm > 32)
  {
    return false;
  }
  return true;
}

3.4 Mac_address (e.g: 01:02:03:04:05:06) 
   function isMac1(sTest)  
  {  
  var   re1=/^([0-9a-fA-F]{2}-){5}([0-9a-fA-F]){2}$/;  //window 00-10-20-30-40-50
  var   re2=/^([0-9a-fA-F]{2}:){5}([0-9a-fA-F]){2}$/;  //Linux  00:10:20:30:40:50
  var ret=(re1.test(sTest) || re2.test(sTest));
  if( ret==false )
     alert("Invalid Mac");
  return   ret;  
  }
function isMac2(x){ // e.g: 001122aabbff
 var result = true;
 var m;
 x = String(x).replace(/^\s+|\s+$/g,"");
 m = x.match(/^([0-9a-fA-F]{12})$/);
 if(m == null)
 {
  alert("Invalid Mac Address");
  result = false;
 }
 return result;
}
3.5 Port (e.g: 1-65535)
 function isPort(sTest)  
  {  
   var ret=( sTest > 0 && sTest < 65536 );

     if(ret == false)
     {
      alert("Invalid Port Number");
     }
   return ret;
 }
3.6 E-mail(e.g: xx@xx.xxx)
/***********************
*  mail format is : xxx@xxx.xxx
*
************************/
function ismail(mail)
{

if(new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(mail))
{
return true;
}
else
{
alert("Invalided Email format");
return false;
}
}
3.7 ICMP类型和代码
function isValidIcmpType(x){
if(x=="") return false;
return (!isNaN(x) &&  ((x == 0) ||  (x >= 3 && x <= 5) ||
  (x == 8) ||  (x >= 11 && x <= 16))  );
}

function isValidIcmpCode(x){
if(x=="") return false;
return (!isNaN(x) &&  (x>=0) && x<(256)  );
}


4、长度和排序
4.1 输入字符长度为n个字符
function strLen(sTest,sMax)
{
 if(sTest.length !=sMax)
 {
  alert("String length should be "+sMax);
  return false;
 }
 return true;
}
4.2 输入字符长度在0-N之间
function strLenMax(sTest,sMax)
{
 if(sTest.length>sMax)
 {
  alert("String length between 0 to "+sMax);
  return false;
 }
 return true;
}
5、浏览器类
5.1 判断浏览器的类型
function BrowseName()
{
alert(window.navigator.appName);
}
 </script>
5.2 判断浏览器版本
function browseVer()
{
alert(window.navigator.appVersion);
}
5.3 判断客户端的分辨率
function Screen()
{
alert(window.screen.width+" * "+ window.screen.height);
}

6、时间类
6.1 短时间 (e.g: 13:04:06)
function isTime(str)
{
 var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/);
 if (a == null || a[1]>23 || a[3]>59 || a[4]>59)
 {
  alert("Format is invalided");
  return false
 }
 else
 {
  return true;
 }
}
6.2 短日期 (e.g: 2003-12-05)
function strDate(str)
{
var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)
{
alert("Pattern err!");
return false;
}
var d= new Date(r[1], r[3]-1, r[4]);
if(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4])
{
return true;
}
else
{
alert("Invalided date");
return false;
}
}
6.3 长时间 (e.g: 2003-12-05 13:04:06 or 2003/12/15 1:2:3)
function isDateTime(str) //e.g:
{
 var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
 var r = str.match(reg);
 if(r==null)
 {
  alert("Pattern err!");
  return false;
 }
 var d= new Date(r[1], r[3]-1,r[4],r[5],r[6],r[7]);
 if (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]&&d.getHours()==r[5]&&d.getMinutes()==r[6]&&d.getSeconds()==r[7])
 {
  return true;
 }
 else
 {
  alert("Invalided DateTime");
  return false;
 }
}
6.4 只有年和月 (e.g: 2003-05,或者2003/5)
function isDate(str)
{
 var reg = /^(\d{1,4})(-|\/)(\d{1,2})$/;
 var r = str.match(reg);
 if(r==null)
 {
  alert("Pattern err!");
  return false;
 }
 var d= new Date(r[1], r[3]-1);
 if (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3])
 {
  return true;
 }
 else
 {
  alert("Invalided Date");
  return false;
 }
}
6.5 只有小时和分钟 (e.g: 12:03)
function isTime(str)
{
 var reg = /^(\d{1,2}):(\d{1,2})$/;
 var r = str.match(reg);
 if(r==null)
 {
  alert("Pattern err!");
  return false;
 }
 var hour= parseInt(r[1]);
 var min= parseInt(r[2]);
 if (hour >=0 && hour < 24 && min >=0 && min <60) 
 {
  return true;
 }
 else
 {
  alert("Invalid Time");
  return false;
 }
}

7、表单类
7.1 所有的表单的值都不能为空
function NonNull(sTest)
{
 if(sTest.value.replace(/^\s+|\s+$/g,"")=="")
 {
 alert("Input should be NULL!");
 return false;
 }
 
 return true;
}
7.2确定用户操作后返回指定URL或自身
function confirmCommand(confirmMsg,urlTarget)
{
  if (confirm(confirmMsg))
  { 
     return urlTarget;   
     }
  else
     return window.location; //myselft no change
}

7.2 多行文本框的值不能为空。
7.3 多行文本框的值不能超过sMaxStrleng
7.4 多行文本框的值不能少于sMixStrleng
7.5 判断单选框是否选择。
7.6 判断复选框是否选择.
7.7 复选框的全选,多选,全不选,反选
7.8 文件上传过程中判断文件类型

6、结合类
6.1 手机号码的验证
6.2 身份证的验证
function isIdCardNo(num)
{
if (isNaN(num)) {alert("输入的不是数字!"); return false;}
var len = num.length, re;
if (len == 15)
re = new RegExp(/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/);
else if (len == 18)
re = new RegExp(/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d)$/);
else {alert("输入的数字位数不对!"); return false;}
var a = num.match(re);
if (a != null)
{
if (len==15)
{
var D = new Date("19"+a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
else
{
var D = new Date(a[3]+"/"+a[4]+"/"+a[5]);
var B = D.getFullYear()==a[3]&&(D.getMonth()+1)==a[4]&&D.getDate()==a[5];
}
if (!B) {alert("输入的身份证号 "+ a[0] +" 里出生日期不对!"); return false;}
}
return true;
}

posted on 2006-11-02 21:18 Flutist 阅读(998) 评论(0)  编辑 收藏 引用 所属分类: 资料查询库
只有注册用户登录后才能发表评论。