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_-])+/; 

 

其中主要就是字母下划线数字+@+字母下划线数字+.+字母下划线数字的组合;其中在正则表达式中‘+’号是表示其前面可以有一个或多个这样的属性。

这些东西主要应用在平时一些登录注册页面数据提交之前的校验。

 

posted @ 2017-03-12 22:18  拄杖盲学轻声码  阅读(477)  评论(0编辑  收藏  举报