js正则表达式应用详解(较详细)
总所周知,正则表达式主要用于字符串处理、表单验证等,简单的代码量实现复杂的功能
实际应用(g表示全局匹配)
1.去除字符串中的空格(正则匹配再去除)
\s* 表示若干个空格(可以是0个)。
\s+ 表示一个或多个空格.
var reg = /\s+/g; var str = "22 55 66 88"; var ctr = str.replace(reg,","); console.log(ctr);
打印结果:22;55;66;88
2.正则匹配特殊字符
var regEn = /[`~!@#$%^&*()_+<>?:"{},.\/;'[\]]/im, //英文特殊字符 regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/im;//中文特殊字符 if(regEn.test(newName) || regCn.test(newName)) { alert("名称不能包含中英文特殊字符."); return false; }
3.正则匹配中文汉字
var reg = /[\u4e00-\u9fa5]/g; var str = "中22 55国66 8梦8"; var ctr = str.replace(reg,"赞"); console.log(ctr);
输出结果:赞22 55赞66 8赞8
4、身份证号码的一个校验
先做一个简单的位数校验来判断身份证的合法性:(15位数字或18位数字或17位数字加X|x)
var reg=/(^\d{15}$)|(^\d{18}$)|(^\d{17}(^\d|X|x)$)/ if(reg.test(num) === false){ alert("你输入的身份证不合法"); return false; }
18位=前六位地区+中八位出生日期+后4位顺序号(最后一个可以是数字或者X,x)
这我针对年份过滤(18xx-20xx),在对月份(01-12),日期(01-31)
其中正则表达式如下(我发现网上很多都是简单判断,日期和月份出现00都没有过滤掉):
var reg = /(^\d{6}((([1])([8|9]))|(([2])([0])))(\d{2}) ((([0])([1-9]))|(([1])([1-2]))) ((([0])([1-9]))|(([1-2])([0-9]))|(([3])([0-1]))) (\d{3}(\d|X|x))$)/;
15位=前六位地区+中六位出生日期+后3位顺序号
其原理和18位上面一样,读者可自行脑补,当然官方的身份证校验更加严格。
其中测试大家可以通过最开始的函数方法,从某个input中获取输入值,然后以该输入值作为入参执行上函数,可以通过jQuery简单实现。
5、E-mail邮箱的校验
var emil=/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
其中主要就是字母下划线数字+@+字母下划线数字+.+字母下划线数字的组合;其中在正则表达式中‘+’号是表示其前面可以有一个或多个这样的属性。
这些东西主要应用在平时一些登录注册页面数据提交之前的校验。