﻿/*
    功    能:常用的格式验证。
    作    者:Edward.Net(msn:haihua_chen@msn.com qq:87912328)
    时    间:2007-11-20
    相关资源:

*/

var Edward;
if(!Edward)Edward = {};
if(!Edward.Web)Edward.Web = {};
if(!Edward.Web.Validator)Edward.Web.Validator = {};

// 验证值是否为null或空
Edward.Web.Validator.IsNullOrEmpty = function(value)
{
    if(value == null || value.Trim().length == 0)
        return true;
    else
        return false;
}

/* 验证字符串str是否为数字 */
Edward.Web.Validator.IsNumber = function(str)
{
    var reg = /^\d+$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为整数 */
Edward.Web.Validator.IsInteger = function(str)
{
    var reg = /^[-\+]?\d+$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为小数 */
Edward.Web.Validator.IsDouble = function(str)
{
    var reg = /^[-\+]?\d+(\.\d+)?$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为英文 */
Edward.Web.Validator.IsEnglish = function(str)
{
    var reg = /^[A-Za-z]+$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为中文 */
Edward.Web.Validator.IsChinese = function(str)
{
    var reg = /^[\u0391-\uFFE5]+$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为金额 有问题 */
Edward.Web.Validator.IsCurrency = function(str)
{
    var reg = /^\d+(\.\d+)?$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为Email格式 */
Edward.Web.Validator.IsEmail = function(str)
{
    var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为Url格式 */
Edward.Web.Validator.IsUrl = function(str)
{
    var reg = /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为邮编格式 */
Edward.Web.Validator.IsZip = function(str)
{
    var reg = /^[0-9]\d{5}$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为QQ号码 */
Edward.Web.Validator.IsQQ = function(str)
{
    var reg = /^[1-9]\d{4,8}$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为身份证号格式*/
Edward.Web.Validator.IsIdCard = function(str)
{
    var reg = /^\d{15}(\d{2}[A-Za-z0-9])?$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为电话号码格式*/
Edward.Web.Validator.IsPhone = function(str)
{
    var reg = /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为手机号码格式 */
Edward.Web.Validator.IsMobile = function(str)
{
    var reg = /^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为用户名格式 只能输入5-20个以字母开头、可带数字、“_”的字串 */
Edward.Web.Validator.IsUsername = function(str)
{
    //var reg = /^[a-zA-Z]{1}([a-zA-Z0-9]|[_]){4,19}$/;
    var reg = /^[a-zA-Z0-9]{1}([a-zA-Z0-9]|[_]){4,19}$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否为密码格式 只能输入6-20个以字母和数字组合的字串 */
Edward.Web.Validator.IsPassword = function(str)
{
    var reg = /^([a-zA-Z0-9]){6,20}$/;
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/* 验证字符串str是否符合reg正则表达式规则 */
Edward.Web.Validator.IsCustom = function(str,reg)
{
    if (!str.match(reg) && str!="")
        return false;
    else
        return true;
}

/*
功能：检查传入的字符串中是否包含不安全字符 ' \ . , ; / < } % * > {
参数：str-要检查的字符串
输出：true表示字符串不包含特殊字符，验证成功；否则返回false
说明：空字符串可通过验证
*/
Edward.Web.Validator.IsSafe = function(str)
{
    StringFilter = new Array ("'" ,"\\", ".", ",", ";", "/","<","}","%","*",">","{");//可以向StringFilter中添加要过滤的字符
    i=StringFilter.length;
    j=str.length;
    for (k=0;k<i;k++)
    {
        for (m=0;m<j;m++)
        {
            temp1=str.charAt(m);
            temp2=StringFilter[k];
            if (temp1==temp2)
            {
                return false;
            }
        }
    }
    return true;
}

/*
功能：检查传入的字符串中是否包含全角空格
参数：str-要检查的字符串
输出：true表示包含全角空格，false表示不包含全角空格
说明：空字符串可以通过验证
*/
Edward.Web.Validator.IsFullSpace = function(str)
{
    var reg = /\　/; 
    return reg.test(str);
}

/*
功能：检查传入的字符串是否为一个IP地址
参数：str-要检查的字符串
输出：true表示验证成功，false表示验证不成功
说明：空字符串不可以通过验证
*/
Edward.Web.Validator.IsIP = function(str)
{
    var reg = /^([1-9]|[1-9]\d|1\d{2}|2[0-1]\d|22[0-3])(\.(\d|[1-9]\d|1\d{2}|2[0-4]\d|25[0-5])){3}$/; 
    return reg.test(str);
}

/*
功能：检查传入值是否在指定的数值范围内。
参数：str-要检查的值
输出：true表示验证成功，false表示验证不成功
说明：空字符串不可以通过验证
*/
Edward.Web.Validator.IsRange = function(str,min,max)
{
    if(str == null || str == "")
        return false;
    var i = parseInt(str,10);
    if(i > max || i < min)
        return false;
    else
        return true;
}

/* 
功能：验证字符串的长度是否小于指定长度
参数：str-要检查的值 len-限定的长度
输出：true表示小于限定长度，false表示大于等于限定长度
说明：空字符串表示小于限定长度
*/
Edward.Web.Validator.IsLessThan = function(str,len)
{
    if(str == null || str.length < len)
        return true;
    else
        return false;
}

/*
功能：验证字符串的长度是否大于指定长度
参数：str-要检查的值 len-限定的长度
输出：true表示大于限定长度，false表示小于等于限定长度
说明：空字符串表示小于限定长度
*/
Edward.Web.Validator.IsBiggerThan = function(str,len)
{
    if(str == null || str.length <= len)
        return false;
    else
        return true;
}