欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Javascript正则

程序员文章站 2023-11-18 10:04:40
正则的定义 字符出现的规律的一种规则! 正则的作用 验证和查找 创建正则 1、var reg=/输入正则规则/; 注意:/ /内部是正则的天下,不支持js语法! 2、var reg=ner RegExp(); //了解即可,不需要强记! 正则的语法 1、关键词的原文就是最简单的正则 2、字符集:一个 ......

正则的定义

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

正则的作用

验证和查找

创建正则

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。

完结!