http://www.cnitblog.com/flutist1225/articles/18780.html
一、验证类
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:
[email protected])
/***********************
* mail format is :
[email protected]
*
************************/
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 ==
|| (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;
}