验证(Javascript和正则表达式)

原文:验证(Javascript和正则表达式)

昨天写了验证(C#和正则表达式),今天又写了个js版的验证。现在贴出来,为了方便自己查阅,同时也希望能给需要的人帮助和一些启发。由于今天才开始接触js,所以可能会有一些错漏,希望大家能批评指正。

var Validator = {
    VerityLib: {
        //验证字符串非空
        IsNotEmpty: function (input) {
            if (input != '') {
                return true;
            } else {
                return false;
            }
        },
        //验证数字(double类型) [可以包含负号和小数点]
        IsNumber: function (input) {
            var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证整数
        IsInteger: function (input) {
            var regex = /^-?\d+$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证非负整数
        IsIntegerNotNagtive: function (input) {
            var regex = /^\d+$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证正整数
        IsIntegerPositive: function (input) {
            var regex = /^[0-9]*[1-9][0-9]*$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证小数
        IsDecimal: function (input) {
            var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证只包含英文字母
        IsEnglishCharacter: function (input) {
            var regex = /^[A-Za-z]+$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证只包含数字和英文字母
        IsIntegerAndEnglishCharacter: function (input) {
            var regex = /^[0-9A-Za-z]+$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证只包含汉字
        IsChineseCharacter: function (input) {
            var regex = /^[\u4e00-\u9fa5]+$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证数字长度范围(数字前端的0计长度)[若要验证固定长度,可传入相同的两个长度数值]
        IsIntegerLength: function (input, lengthBegin, lengthEnd) {
            var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$';
            var regex = new RegExp(pattern);
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证字符串包含内容
        IsStringInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter) {
            if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) {
                return false; //如果英文字母、数字和汉字都没有,则返回false
            }
            var pattern = '^[';
            if (Boolean(withEnglishCharacter)) {
                pattern += 'a-zA-Z';
            }
            if (Boolean(withNumber)) {
                pattern += '0-9';
            }
            if (Boolean(withChineseCharacter)) {
                pattern += '\\u4E00-\\u9FA5';
            }
            pattern += ']+$';
            var regex = new RegExp(pattern);
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
        IsStringLength: function (input, LengthBegin, LengthEnd) {
            var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$';
            var regex = new RegExp(pattern);
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证字符串长度范围(字符串内只包含数字和/或英文字母)[若要验证固定长度,可传入相同的两个长度数值]
        IsStringLengthOnlyNumberAndEnglishCharacter: function (input, LengthBegin, LengthEnd) {
            var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$';
            var regex = new RegExp(pattern);
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]
        IsStringLengthByInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) {
            if (!withEnglishCharacter && !withNumber && !withChineseCharacter) {
                return false; //如果英文字母、数字和汉字都没有,则返回false
            }
            var pattern = '^[';
            if (Boolean(withEnglishCharacter))
                pattern += 'a-zA-Z';
            if (Boolean(withNumber))
                pattern += '0-9';
            if (Boolean(withChineseCharacter))
                pattern += '\\u4E00-\\u9FA5';
            pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$';
            var regex = new RegExp(pattern);
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证字符串字节数长度范围 [若要验证固定长度,可传入相同的两个长度数值;每个汉字为两个字节长度]
        IsStringByteLength: function (input, lengthBegin, lengthEnd) {
            var regex = /[^\x00-\xff]/g;
            var byteLength = input.replace(regex, 'ok').length;
            if (byteLength >= lengthBegin && byteLength <= lengthEnd) {
                return true;
            } else {
                return false;
            }
        },
        //验证日期 [只能验证日期,不能验证时间]
        IsDateTime: function (input) {
            if (Date.parse(input)) {
                return true;
            } else {
                return false;
            }
        },
        //验证固定电话号码 [3位或4位区号;区号可以用小括号括起来;区号可以省略;区号与本地号间可以用减号或空格隔开;可以有3位数的分机号,分机号前要加减号]
        IsTelePhoneNumber: function (input) {
            var regex = /^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证手机号码 [可匹配"(+86)013325656352",括号可以省略,+号可以省略,(+86)可以省略,11位手机号前的0可以省略;11位手机号第二位数可以是3、4、5、8中的任意一个]
        IsMobilePhoneNumber: function (input) {
            var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3458]\d{9}$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证电话号码(可以是固定电话号码或手机号码)
        IsPhoneNumber: function (input) {
            var regex = /^(\((\+)?86\)|((\+)?86)?)0?1[3458]\d{9}$|^(((\(0\d{2}\)|0\d{2})[- ]?)?\d{8}|((\(0\d{3}\)|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证邮政编码
        IsZipCode: function (input) {
            var regex = /^\d{6}$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证电子邮箱 [@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字]
        IsEmail: function (input) {
            ////邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。
            //var regex = /^[a-zA-Z0-9]((?<!(\.\.|--))[a-zA-Z0-9\._-]){1,16}[a-zA-Z0-9]@([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?|((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
            var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)[允许省略"://";可以添加端口号;允许层级;允许传参;域名中至少一个点号且此点号前要有内容]
        IsURL: function (input) {
            ////每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,单个域长度不超过63,完整的域名全长不超过256个字符。在DNS系统中,全名是以一个点“.”来结束的,例如“www.nit.edu.cn.”。没有最后的那个点则表示一个相对地址。
            ////没有例如"http://"的前缀,没有传参的匹配
            //var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/;

            //var regex = /^(((file|gopher|news|nntp|telnet|http|ftp|https|ftps|sftp)://)|(www\.))+(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(/[a-zA-Z0-9\&%_\./-~-]*)?$/;
            var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证IPv4地址 [第一位和最后一位数字不能是0或255;允许用0补位]
        IsIPv4: function (input) {
            var regex = /^(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-5]|2[0-4]\d]|[01]?\d?\d)\.(25[0-4]|2[0-4]\d]|[01]?\d{2}|[1-9])$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证IPv6地址 [可用于匹配任何一个合法的IPv6地址]
        IsIPv6: function (input) {
            var regex = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证身份证号 [可验证一代或二代身份证]
        IsIDCard: function (input) {
            input = input.toUpperCase();
            //验证身份证号码格式 [一代身份证号码为15位的数字;二代身份证号码为18位的数字或17位的数字加字母X]
            if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input))) {
                return false;
            }
            //验证省份
            var arrCity = { 11: '北京', 12: '天津', 13: '河北', 14: '山西', 15: '内蒙古', 21: '辽宁', 22: '吉林', 23: '黑龙江 ', 31: '上海', 32: '江苏', 33: '浙江', 34: '安徽', 35: '福建', 36: '江西', 37: '山东', 41: '河南', 42: '湖北', 43: '湖南', 44: '广东', 45: '广西', 46: '海南', 50: '重庆', 51: '四川', 52: '贵州', 53: '云南', 54: '西藏', 61: '陕西', 62: '甘肃', 63: '青海', 64: '宁夏', 65: '新疆', 71: '台湾', 81: '香港', 82: '澳门', 91: '国外' };
            if (arrCity[parseInt(input.substr(0, 2))] == null) {
                return false;
            }
            //验证出生日期
            var regBirth, birthSplit, birth;
            var len = input.length;
            if (len == 15) {
                regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);
                birthSplit = input.match(regBirth);
                birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
                if (!(birth.getYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
                    return false;
                }
                return true;
            }
            else if (len == 18) {
                regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i);
                birthSplit = input.match(regBirth);
                birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);
                if (!(birth.getFullYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {
                    return false;
                }
                //验证校验码
                var valnum;
                var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
                var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
                var nTemp = 0, i;
                for (i = 0; i < 17; i++) {
                    nTemp += input.substr(i, 1) * arrInt[i];
                }
                valnum = arrCh[nTemp % 11];
                if (valnum != input.substr(17, 1)) {
                    return false;
                }
                return true;
            }
            return false;
        },
        //验证经度
        IsLongitude: function (input) {
            var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        },
        //验证纬度
        IsLatitude: function (input) {
            var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;
            if (input.match(regex)) {
                return true;
            } else {
                return false;
            }
        }
    }
}
时间: 2024-09-15 02:11:58

验证(Javascript和正则表达式)的相关文章

JavaScript常用的正则表达式表单验证代码_正则表达式

常用的正则表达式如下: 复制代码 代码如下: "^-?[1-9]\\d*$", //整数 "^[1-9]\\d*$", //正整数 "^-[1-9]\\d*$", //负整数 "^([+-]?)\\d*\\.?\\d+$", //数字 "^[1-9]\\d*|0$", //正数(正整数 + 0) "^-[1-9]\\d*|0$", //负数(负整数 + 0) "^([+-]?)

javascript IP、域名、手机号码正则表达式验证代码_正则表达式

这个手机号码正则验证函数可以说是最新的都支持的,里面有详细的介绍说明,不论以后增加什么号段大家都非常容易的稍微修改一下即可.javascript 手机号码正则表达式验证函数 复制代码 代码如下: //ip与域名验证函数 function checkIP() {     var ipArray,ip,j;     ip = document.ipform.ip.value;     if(/[A-Za-z_-]/.test(ip)){         if (ip.indexOf(" "

js 常用正则表达式表单验证代码_正则表达式

正则表达式使用详解 简介 简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具.其作用如下:测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证.替换文本.可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字.根据模式匹配从字符串中提取一个子字符串.可以用来在文本或输入字段中查找特定文字. 基本语法 在对正则表达式的功能和作用有了初步的了解之后,我们就来具体看一下正则表

javascript类型系统——正则表达式RegExp类型

原文:javascript类型系统--正则表达式RegExp类型 × 目录 [1]对象 [2]实例属性 [3]静态属性[4]实例方法 前面的话 前面已经介绍过javascript中正则表达式的基础语法.javascript的RegExp类表示正则表达式,String和RegExp都定义了方法,使用正则表达式可以进行强大的模式匹配和文本检索与替换.本文将介绍正则表达式的RegExp对象,以及正则表达式涉及到的属性和方法   对象 javascript中的正则表达式用RegExp对象表示,有两种写法

javascript常用正则表达式汇总_javascript技巧

javascript常用正则表达式汇总 /** * 检验各种规则 * @param str 检验的内容 * @param cType 预设的检验规则 字符串[ * empty, 检验是否为空 * telphone, 座机手机号码 * allphone, 所有手机号码 * ydphone, 移动手机号码 * ltphone, 联通手机号码 * dxphone, 电信手机号码 * email, 邮箱 * url, 网址 * cn, 汉字 * image, 图片格式 * emscode, 邮政编码 *

在JavaScript的正则表达式中使用exec()方法

         这篇文章主要介绍了在JavaScript的正则表达式中使用exec()方法,是JS入门学习中的基础知识,需要的朋友可以参考下              exec方法为正则表达式匹配的文本搜索字符串.如果找到匹配,则返回结果数组; 否则,返回null. 语法 ? 1 RegExpObject.exec( string ); 下面是参数的详细信息: string : 要搜索的字符串 返回值: 如果找到一个匹配,如果不为空,则返回匹配的文本. 例子: ? 1 2 3 4 5 6 7

JavaScript的正则表达式中test()方法的使用

这篇文章主要介绍了简述JavaScript的正则表达式中test()方法的使用,是JS入门学习中的基础知识,需要的朋友可以参考下 test方法为正则表达式匹配的文本搜索字符串.如果找到匹配,则返回true; 否则返回false. 语法 ? 1 RegExpObject.test( string ); 下面是参数的详细信息: string : 要搜索的字符串 返回值: 如果找到一个匹配,如果不为空,则返回匹配的文本. 例子: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1

简述JavaScript中正则表达式的使用方法

  这篇文章主要介绍了JavaScript中正则表达式的使用方法,正则表达式是JS进阶学习中的重要知识,本文简述了JS对正则表达式的支持情况,需要的朋友可以参考下 正则表达式是一个对象,它描述了字符模式. JavaScript的RegExp类表示正则表达式和字符串和正则表达式定义,使用正则表达式来进行强大的模式匹配和搜索和替换文本功能的方法. 语法: 正则表达式可以用RegExp( ) 构造这样的定义: ? 1 2 3 4 5 var pattern = new RegExp(pattern,

验证用户名的正则表达式

  求一个验证用户名的正则表达式 各位大哥大姐,晚辈求一个验证用户名的正则表达式,苦苦思索了一个星期还是没有弄出来,本人愚钝,还望大家指教! VBscript编程要求用户名的字符控制在3至20个之间,由中文.大小写字母.数字.下划线.小数点.减号组成, 必须以中英文或数字开头结尾且下划线.小数点.减号这三个字符中的其中一个的组合不能是连续的 a__a或a--a或a..a 这样的,但可以 a_a.a_a.a_a-a-a-a_a-a.a.a.a这样的. 如果超出这个范围则用户名不通过. 就是一直弄不