Javascript正则

2022-10-17,

正则的定义

字符出现的规律的一种规则!

正则的作用

验证和查找

创建正则

1、var reg=/输入正则规则/;  注意:/ /内部是正则的天下,不支持js语法!

2、var reg=ner regexp();  //了解即可,不需要强记!

正则的语法

1、关键词的原文就是最简单的正则

2、字符集:一个字符可能出现的备选字符的集合

  eg::政[治法协]匹配:政治  政法  政协

  常见字符集:如果备选字符的unicode编码是连续的,可以省略中间的字符,用“-”链接

  eg:[0123456789]<=>0-9  [abcdefg]<=>[a-g]  

  预定字符集:预先已经规定好的字符集

  eg:\w:一个字母数字下划线  \d一个数字[0-9]

  \s空格,制表符

  .任意字符

  ^除了xxx

量词:修饰一个字符集出现的次数!

1、有明确的数量要求或者范围

字符集{m,n}  m:表示字符集出现的最小次数!    n:表示字符集出现的最大次数!

字符集{m}:至少出现m次,至多不限!

字符集{m}:只能必须是m次

2、没有明确的数量要求

字符集?:可有可无,至多一次。等价于{0,1}

字符集+:至多一次,多了不限。等价于{1,}

字符集*:可有可无,次数不限。等价于{0,}

注意:如果正则规则中有特殊含义的字符,可以使用转义字符"\"

选择和分组

1、选择:在多个规则之间任选其一都可以匹配!

  操作:规则1|规则2:只要有一个规则适用即可!

2、分组:将多个规则分为一组,由一个量词修饰!

  操作:()eg:(+86  10086)?  eg:(微/w(ei)?)  (信/x(in)?)

匹配指定位置

1、开头:^  ^\s以空格开头

2、结尾:$  \s$以空格结尾

  eg:^\d{6}:以六位数字开头

    \d{6}$:以六位数字结尾

    ^\d{6}$:字符串只能是六位数字组成

3、单词边界:\b

  eg:no\b  匹配以no结尾的单词

    \bno  匹配以no开头的单词

    \bno\b  匹配完整的单词no

案例:

1、身份证  340881199812120827

  18位身份证号码的验证规则:^(\d{17}[0-9xx])$

  或15位数字+2位数字+一位数字或者x或者x:^\d{15}(\d{2}[0-9xx])?$

2、手机号:  6085255  解析:0086|+86  空格  |  6085255  9位数

  9位数号码的验证规则:^(0086|86)?\s*|[6085255]\d[{9}$

字符串的api

1、查找敏感词

  0.查找关键词的下标----固定的敏感词

  var i=str.indexof("关键词",starti);

  从starti位置开始向后找最近的一个关键词的下标,找到就返回其下标,找不到返回-1。

  1.判断是否包含敏感词----模糊查找

  str.search(/正则/);

  //找第一个关键词的下标,找到就返回其下标,找不到返回-1。

  2.查找所有敏感词内容----返回数组内容

  str.match(/正则/g);

  问题:1>默认正则只要匹配到一个关键词就下标了!

      解决:在正则的第二个/后g global

      2>正则默认区分大小写

      解决:在正则的第二个/后加i ignore

  3.既查找敏感词内容又查找敏感词位置----正则对象

  reg.exec();----正则对象中的

2、替换:将符合要求的关键词替换为指定内容

  1.简单替换

  str.replace(/正则/g,"需要替换的新值");

  注意:此处替换的新值是固定的!

  2.高级替换

  function kws (key) {

    key.length==2?return"**":

      key.length==3?return"***":

        return"*"

}

str.replace(/正则/g,kws);

注意:replace方法每找到一个关键词,会调用一次回调函数,将关键词传入,由回调函数替代的值!

3、切割:split  将字符串按指定的关键词切割为多个子字符串,放在一个数组返回!

  1.简单切割:var arr=str.split("切割符");

  2.复杂切割:var arr=str.aplit(/正则/);

    常用套路:var arr=str.aplit(" ");

    相反操作:var str=arr.join(" ");

正则对象

 1、regexp对象:封装了一条正则规则,提供了操作正则验证、或查找api的一类对象!

 2、创建正则对象:

  1.直接量:var reg=/正则/ig;

  问题:此方法正则一旦建立,无法通过js直接修改

  2.用new 

  var reg=new regexp("正则","ig");

  优点:正则是字符串形式,可以使用js语法!

regexp的api

1、验证字符串格式

  var bool=reg.test(str);

  验证字符串是否符合正则规则,返回bool

  可以直接当作判断条件

  验证必需前加^后加$

2、既查找关键词内容又查找关键词位置

  reg.exec(str);

  查找str中下一个关键词的位置和内容,返回一个数组

    0:关键词的内容  index:关键词的位置

  注意:默认第一次查找从0号位置开始;以后每执行一次,都从上一次结束的位置之后***开始;找不到就返回null。

完结!

《Javascript正则.doc》

下载本文的Word格式文档,以方便收藏与打印。