A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

正则的作用
验证和查找
创建正则
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。

2 个回复

倒序浏览
有任何问题欢迎在评论区留言
回复 使用道具 举报
或者添加学姐微信号
DKA-2018
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马