正则

js 正则实例

[javascript] view plain copy
    1. var Validator = {  
    2.     VerityLib: {  
    3.         //验证字符串非空  
    4.         IsNotEmpty: function (input) {  
    5.             if (input != '') {  
    6.                 return true;  
    7.             } else {  
    8.                 return false;  
    9.             }  
    10.         },  
    11.         //验证数字(double类型) [可以包含负号和小数点]  
    12.         IsNumber: function (input) {  
    13.             var regex = /^-?\d+$|^(-?\d+)(\.\d+)?$/;  
    14.             if (input.match(regex)) {  
    15.                 return true;  
    16.             } else {  
    17.                 return false;  
    18.             }  
    19.         },  
    20.         //验证整数  
    21.         IsInteger: function (input) {  
    22.             var regex = /^-?\d+$/;  
    23.             if (input.match(regex)) {  
    24.                 return true;  
    25.             } else {  
    26.                 return false;  
    27.             }  
    28.         },  
    29.         //验证非负整数  
    30.         IsIntegerNotNagtive: function (input) {  
    31.             var regex = /^\d+$/;  
    32.             if (input.match(regex)) {  
    33.                 return true;  
    34.             } else {  
    35.                 return false;  
    36.             }  
    37.         },  
    38.         //验证正整数  
    39.         IsIntegerPositive: function (input) {  
    40.             var regex = /^[0-9]*[1-9][0-9]*$/;  
    41.             if (input.match(regex)) {  
    42.                 return true;  
    43.             } else {  
    44.                 return false;  
    45.             }  
    46.         },  
    47.         //验证小数  
    48.         IsDecimal: function (input) {  
    49.             var regex = /^([-+]?[1-9]\d*\.\d+|-?0\.\d*[1-9]\d*)$/;  
    50.             if (input.match(regex)) {  
    51.                 return true;  
    52.             } else {  
    53.                 return false;  
    54.             }  
    55.         },  
    56.         //验证只包含英文字母  
    57.         IsEnglishCharacter: function (input) {  
    58.             var regex = /^[A-Za-z]+$/;  
    59.             if (input.match(regex)) {  
    60.                 return true;  
    61.             } else {  
    62.                 return false;  
    63.             }  
    64.         },  
    65.         //验证只包含数字和英文字母  
    66.         IsIntegerAndEnglishCharacter: function (input) {  
    67.             var regex = /^[0-9A-Za-z]+$/;  
    68.             if (input.match(regex)) {  
    69.                 return true;  
    70.             } else {  
    71.                 return false;  
    72.             }  
    73.         },  
    74.         //验证只包含汉字  
    75.         IsChineseCharacter: function (input) {  
    76.             var regex = /^[\u4e00-\u9fa5]+$/;  
    77.             if (input.match(regex)) {  
    78.                 return true;  
    79.             } else {  
    80.                 return false;  
    81.             }  
    82.         },  
    83.         //验证数字长度范围(数字前端的0计长度)[若要验证固定长度,可传入相同的两个长度数值]  
    84.         IsIntegerLength: function (input, lengthBegin, lengthEnd) {  
    85.             var pattern = '^\\d{' + lengthBegin + ',' + lengthEnd + '}$';  
    86.             var regex = new RegExp(pattern);  
    87.             if (input.match(regex)) {  
    88.                 return true;  
    89.             } else {  
    90.                 return false;  
    91.             }  
    92.         },  
    93.         //验证字符串包含内容  
    94.         IsStringInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter) {  
    95.             if (!Boolean(withEnglishCharacter) && !Boolean(withNumber) && !Boolean(withChineseCharacter)) {  
    96.                 return false; //如果英文字母、数字和汉字都没有,则返回false  
    97.             }  
    98.             var pattern = '^[';  
    99.             if (Boolean(withEnglishCharacter)) {  
    100.                 pattern += 'a-zA-Z';  
    101.             }  
    102.             if (Boolean(withNumber)) {  
    103.                 pattern += '0-9';  
    104.             }  
    105.             if (Boolean(withChineseCharacter)) {  
    106.                 pattern += '\\u4E00-\\u9FA5';  
    107.             }  
    108.             pattern += ']+$';  
    109.             var regex = new RegExp(pattern);  
    110.             if (input.match(regex)) {  
    111.                 return true;  
    112.             } else {  
    113.                 return false;  
    114.             }  
    115.         },  
    116.         //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]  
    117.         IsStringLength: function (input, LengthBegin, LengthEnd) {  
    118.             var pattern = '^.{' + lengthBegin + ',' + lengthEnd + '}$';  
    119.             var regex = new RegExp(pattern);  
    120.             if (input.match(regex)) {  
    121.                 return true;  
    122.             } else {  
    123.                 return false;  
    124.             }  
    125.         },  
    126.         //验证字符串长度范围(字符串内只包含数字和/或英文字母)[若要验证固定长度,可传入相同的两个长度数值]  
    127.         IsStringLengthOnlyNumberAndEnglishCharacter: function (input, LengthBegin, LengthEnd) {  
    128.             var pattern = '^[0-9a-zA-z]{' + lengthBegin + ',' + lengthEnd + '}$';  
    129.             var regex = new RegExp(pattern);  
    130.             if (input.match(regex)) {  
    131.                 return true;  
    132.             } else {  
    133.                 return false;  
    134.             }  
    135.         },  
    136.         //验证字符串长度范围 [若要验证固定长度,可传入相同的两个长度数值]  
    137.         IsStringLengthByInclude: function (input, withEnglishCharacter, withNumber, withChineseCharacter, lengthBegin, lengthEnd) {  
    138.             if (!withEnglishCharacter && !withNumber && !withChineseCharacter) {  
    139.                 return false; //如果英文字母、数字和汉字都没有,则返回false  
    140.             }  
    141.             var pattern = '^[';  
    142.             if (Boolean(withEnglishCharacter))  
    143.                 pattern += 'a-zA-Z';  
    144.             if (Boolean(withNumber))  
    145.                 pattern += '0-9';  
    146.             if (Boolean(withChineseCharacter))  
    147.                 pattern += '\\u4E00-\\u9FA5';  
    148.             pattern += ']{' + lengthBegin + ',' + lengthEnd + '}$';  
    149.             var regex = new RegExp(pattern);  
    150.             if (input.match(regex)) {  
    151.                 return true;  
    152.             } else {  
    153.                 return false;  
    154.             }  
    155.         },  
    156.         //验证字符串字节数长度范围 [若要验证固定长度,可传入相同的两个长度数值;每个汉字为两个字节长度]  
    157.         IsStringByteLength: function (input, lengthBegin, lengthEnd) {  
    158.             var regex = /[^\x00-\xff]/g;  
    159.             var byteLength = input.replace(regex, 'ok').length;  
    160.             if (byteLength >= lengthBegin && byteLength <= lengthEnd) {  
    161.                 return true;  
    162.             } else {  
    163.                 return false;  
    164.             }  
    165.         },  
    166.         //验证日期 [只能验证日期,不能验证时间]  
    167.         IsDateTime: function (input) {  
    168.             if (Date.parse(input)) {  
    169.                 return true;  
    170.             } else {  
    171.                 return false;  
    172.             }  
    173.         },  
    174.         //验证固定电话号码 [3位或4位区号;区号可以用小括号括起来;区号可以省略;区号与本地号间可以用减号或空格隔开;可以有3位数的分机号,分机号前要加减号]  
    175.         IsTelePhoneNumber: function (input) {  
    176.             var regex = /^(((0\d2|0\d{2})[- ]?)?\d{8}|((0\d3|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;  
    177.             if (input.match(regex)) {  
    178.                 return true;  
    179.             } else {  
    180.                 return false;  
    181.             }  
    182.         },  
    183.         //验证手机号码 [可匹配"(+86)013325656352",括号可以省略,+号可以省略,(+86)可以省略,11位手机号前的0可以省略;11位手机号第二位数可以是3、4、5、8中的任意一个]  
    184.         IsMobilePhoneNumber: function (input) {  
    185.             var regex = /^((\+)?86|((\+)?86)?)0?1[3458]\d{9}$/;  
    186.             if (input.match(regex)) {  
    187.                 return true;  
    188.             } else {  
    189.                 return false;  
    190.             }  
    191.         },  
    192.         //验证电话号码(可以是固定电话号码或手机号码)  
    193.         IsPhoneNumber: function (input) {  
    194.             var regex = /^((\+)?86|((\+)?86)?)0?1[3458]\d{9}$|^(((0\d2|0\d{2})[- ]?)?\d{8}|((0\d3|0\d{3})[- ]?)?\d{7})(-\d{3})?$/;  
    195.             if (input.match(regex)) {  
    196.                 return true;  
    197.             } else {  
    198.                 return false;  
    199.             }  
    200.         },  
    201.         //验证邮政编码  
    202.         IsZipCode: function (input) {  
    203.             var regex = /^\d{6}$/;  
    204.             if (input.match(regex)) {  
    205.                 return true;  
    206.             } else {  
    207.                 return false;  
    208.             }  
    209.         },  
    210.         //验证电子邮箱 [@字符前可以包含字母、数字、下划线和点号;@字符后可以包含字母、数字、下划线和点号;@字符后至少包含一个点号且点号不能是最后一个字符;最后一个点号后只能是字母或数字]  
    211.         IsEmail: function (input) {  
    212.             ////邮箱名以数字或字母开头;邮箱名可由字母、数字、点号、减号、下划线组成;邮箱名(@前的字符)长度为3~18个字符;邮箱名不能以点号、减号或下划线结尾;不能出现连续两个或两个以上的点号、减号。  
    213.             //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?)$/;  
    214.             var regex = /^([\w-\.]+)@([\w-\.]+)(\.[a-zA-Z0-9]+)$/;  
    215.             if (input.match(regex)) {  
    216.                 return true;  
    217.             } else {  
    218.                 return false;  
    219.             }  
    220.         },  
    221.         //验证网址(可以匹配IPv4地址但没对IPv4地址进行格式验证;IPv6暂时没做匹配)[允许省略"://";可以添加端口号;允许层级;允许传参;域名中至少一个点号且此点号前要有内容]  
    222.         IsURL: function (input) {  
    223.             ////每级域名由字母、数字和减号构成(第一个字母不能是减号),不区分大小写,单个域长度不超过63,完整的域名全长不超过256个字符。在DNS系统中,全名是以一个点“.”来结束的,例如“www.nit.edu.cn.”。没有最后的那个点则表示一个相对地址。   
    224.             ////没有例如"http://"的前缀,没有传参的匹配  
    225.             //var regex = /^([0-9a-zA-Z][0-9a-zA-Z-]{0,62}\.)+([0-9a-zA-Z][0-9a-zA-Z-]{0,62})\.?$/;  
    226.   
    227.             //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\&%_\./-~-]*)?$/;  
    228.             var regex = /^([a-zA-Z]+:\/\/)?([\w-\.]+)(\.[a-zA-Z0-9]+)(:\d{0,5})?\/?([\w-\/]*)\.?([a-zA-Z]*)\??(([\w-]*=[\w%]*&?)*)$/;  
    229.             if (input.match(regex)) {  
    230.                 return true;  
    231.             } else {  
    232.                 return false;  
    233.             }  
    234.         },  
    235.         //验证IPv4地址 [第一位和最后一位数字不能是0或255;允许用0补位]  
    236.         IsIPv4: function (input) {  
    237.             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])$/;  
    238.             if (input.match(regex)) {  
    239.                 return true;  
    240.             } else {  
    241.                 return false;  
    242.             }  
    243.         },  
    244.         //验证IPv6地址 [可用于匹配任何一个合法的IPv6地址]  
    245.         IsIPv6: function (input) {  
    246.             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*$/;  
    247.             if (input.match(regex)) {  
    248.                 return true;  
    249.             } else {  
    250.                 return false;  
    251.             }  
    252.         },  
    253.         //验证身份证号 [可验证一代或二代身份证]  
    254.         IsIDCard: function (input) {  
    255.             input = input.toUpperCase();  
    256.             //验证身份证号码格式 [一代身份证号码为15位的数字;二代身份证号码为18位的数字或17位的数字加字母X]  
    257.             if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/i.test(input))) {  
    258.                 return false;  
    259.             }  
    260.             //验证省份  
    261.             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: '国外' };  
    262.             if (arrCity[parseInt(input.substr(0, 2))] == null) {  
    263.                 return false;  
    264.             }  
    265.             //验证出生日期  
    266.             var regBirth, birthSplit, birth;  
    267.             var len = input.length;  
    268.             if (len == 15) {  
    269.                 regBirth = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/);  
    270.                 birthSplit = input.match(regBirth);  
    271.                 birth = new Date('19' + birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);  
    272.                 if (!(birth.getYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {  
    273.                     return false;  
    274.                 }  
    275.                 return true;  
    276.             }  
    277.             else if (len == 18) {  
    278.                 regBirth = new RegExp(/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/i);  
    279.                 birthSplit = input.match(regBirth);  
    280.                 birth = new Date(birthSplit[2] + '/' + birthSplit[3] + '/' + birthSplit[4]);  
    281.                 if (!(birth.getFullYear() == Number(birthSplit[2]) && (birth.getMonth() + 1) == Number(birthSplit[3]) && birth.getDate() == Number(birthSplit[4]))) {  
    282.                     return false;  
    283.                 }  
    284.                 //验证校验码  
    285.                 var valnum;  
    286.                 var arrInt = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);  
    287.                 var arrCh = new Array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');  
    288.                 var nTemp = 0, i;  
    289.                 for (i = 0; i < 17; i++) {  
    290.                     nTemp += input.substr(i, 1) * arrInt[i];  
    291.                 }  
    292.                 valnum = arrCh[nTemp % 11];  
    293.                 if (valnum != input.substr(17, 1)) {  
    294.                     return false;  
    295.                 }  
    296.                 return true;  
    297.             }  
    298.             return false;  
    299.         },  
    300.         //验证经度  
    301.         IsLongitude: function (input) {  
    302.             var regex = /^[-\+]?((1[0-7]\d{1}|0?\d{1,2})\.\d{1,5}|180\.0{1,5})$/;  
    303.             if (input.match(regex)) {  
    304.                 return true;  
    305.             } else {  
    306.                 return false;  
    307.             }  
    308.         },  
    309.         //验证纬度  
    310.         IsLatitude: function (input) {  
    311.             var regex = /^[-\+]?([0-8]?\d{1}\.\d{1,5}|90\.0{1,5})$/;  
    312.             if (input.match(regex)) {  
    313.                 return true;  
    314.             } else {  
    315.                 return false;  
    316.             }  
    317.         }  
    318.     }  
    319. }  
posted @ 2017-06-12 15:20  小伙子很浪  阅读(106)  评论(0编辑  收藏  举报