常用正则表达式及其思路详解
注意:正则表达式的匹配超大文本的效率比较低,为了匹配效率加快,最好是是先精确到小模块,再使用正则匹配,这样搜索效率会快一点。
var vaildReg = {
//判断是否为QQ号码
isQQ:function(str){
//1.校验首字母是不是数字,并且大于0。^[1-9]
//2.校验QQ总长度最大为11位,最小为5位
var reg = /^[1-9][0-9]{4,10}$/g;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为手机号码
isMobile:function(str){
//1.手机号的第一个是1开头
//2.手机号的第二位虽然一般都是3,4,5,7,8,但是为了防止以后再增长所以不校验第二位
//3.手机号第三位以后的9位都是[0-9]之间的数字
//4.总长度是11位
var reg = /^1[0-9]{10}$/g;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为合法的email邮箱
isMail:function(str){
//1.中间有@符号
//2.@符号前面有至少1位数字或字母
//3.@符号后面以什么什么.加上字母结尾
//4.@和.com之间有至少1位数字或字母
var reg = /^[0-9a-zA-Z.-]{1,}@[0-9a-zA-Z.-]{1,}.[a-zA-Z]+$/g;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为数字
isNumber:function(str){
//1.开头一直到最后都是数字^\d+
var reg = /^\d+$/g;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否全都为中文
isAllChinese:function(str){
//1.正则判断中文根据unicode编码来判断,中文在unicode编码中是\u4e00到\u9fa5,共有20901个汉字
var reg = /^[\u4e00-\u9fa5]+$/gm;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否包含中文
isContainChinese:function(str){
//1.正则判断中文根据unicode编码来判断,中文在unicode编码中是\u4e00到\u9fa5,共有20901个汉字
var reg = /[\u4e00-\u9fa5]/gm;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为邮政编码
isPostcode:function(str){
//1.首字母不为0,再有5个任意数字
var reg = /^[^0][0-9]{5}$/g;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为合法的身份证号码,校验15位和18位身份证
isIDcard:function(str){
//1.15位的身份证号码是有18**|19**年出身的人
//2.18位的身份证末尾多了一个随机校验码
//3.身份证前6位是地址码,后8位是出身日期,再后3位是顺序码,最后一位是校验码。
//4.地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
//5.出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
//6.顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
//7.校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
var reg = /^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)?$/g;
//前两位地址码规律
var city={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(reg.test(str)){
if(!city[str.substr(0,2)]){
return false;
}else{
//18位身份证需要验证最后一位校验位
if(str.length == 18){
var arrInt = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var arrCh = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var sum = 0, i, residue;
for(i=0; i<17; i++) {
sum += str.substr(i, 1) * arrInt[i];
}
residue = arrCh[sum % 11];
if (residue !== str.substr(17, 1)) return false;
}
}
return true;
}else{
return false;
}
},
//判断是否为合法http地址
isURL:function(str){
//1.合法URL地址,协议一定不能少,是不是https的就不所谓了
//2.双斜杠之后,可能会存在域名地址,也可能是IP地址(可能就会带端口好了)
//
var reg = /^https?:\/\/[a-zA-Z0-9._-]+(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//判断是否为合法的IP4地址
isIP4:function(str){
// 1、1.1.1.1 四段 [0 , 255]
// 2.第一段不能为0
// 3.每个段不能以0开头
var reg = /^([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])){3}$/gi;
if(reg.test(str)){
return true;
}else{
return false;
}
},
//去掉前后所有的空格,换行等
trim:function(str){
//1.开头空格,匹配多次^(\s|\n|\r)+
//2.末尾空格,匹配多次(\s|\n|\r)+$
str = str + '';
var reg = /^\s|\s+$/gim;
return str.replace(reg,'');
}
}
console.log('QQ',vaildReg.isQQ('12345678901')?'校验通过':'校验失败');
console.log('手机',vaildReg.isMobile('13700000000')?'校验通过':'校验失败');
console.log('邮箱',vaildReg.isMail('1333-.@3.a')?'校验通过':'校验失败');
console.log('数字',vaildReg.isNumber('0333')?'校验通过':'校验失败');
console.log('全为中文',vaildReg.isAllChinese('你三好')?'校验通过':'校验失败');
console.log('包含中文',vaildReg.isContainChinese('33AAA你AA')?'校验通过':'校验失败');
console.log('邮政编码',vaildReg.isPostcode('123456')?'校验通过':'校验失败');
console.log('身份证号码',vaildReg.isIDcard('362321199310207836')?'校验通过':'校验失败');
console.log('URL地址',vaildReg.isURL('http://33:33/JM2X/1')?'校验通过':'校验失败');
console.log('IP地址',vaildReg.isIP4('925.255.255.255')?'校验通过':'校验失败');
console.log('去除空格:',vaildReg.trim(' \n\r\tAAA 03\r33 \r'));
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。