美文网首页
第七天正则表达式

第七天正则表达式

作者: 洋仔幕落幕合 | 来源:发表于2016-11-29 22:39 被阅读0次

    正则表达式的理念:

                1. 关于字符串的一些方法
                2. 操作字符串,不用正则完全可以,如果用正则的话就会:方便并且效率-极高
                3.正则也叫规则表达式
          例子--1:找数字:
           var str = 'sjd23 2 l289k 232432432  j  9';   期望结果: 23 2 289  232432432  9 
                  (1):传统做法:循环判断
                  (2):正则做法:str.match(/\d+/g)使用正则时要先new一个正则出来:
    

    正则的使用方法:

               new RegExp();RegExp:正则单词简写,
               完整写法:Regular Expression  new RegExp('规则');
    

    正则里string两个方法:

          (1):str.search(正则);  //在字符串中查找,找到匹配表达式的第一个字符串的位置   
                         indexOf  找不到,返回 -1  
          (2):str.match(正则);//在字符串中用 正则表达式来匹配,返回的是符合规则的字符串数组
                         找不到,返回 null
    

    使用正则找字母的几种写法:

             new RegExp('k');new RegExp(规则)--区分大小写
             new RegExp(‘规则’ ,‘选项’)--i是指选项并且不去区分大小写 :
             new RegExp('正则','选项');
             new RegExp(‘规则’ ,‘选项’)  的简写:/规则/选项;
    

    正则的转义:

          \     表示转义符
          \ d   表示数字
          \n    表示换行
          \w    表示字母 数字和下划线()
          \s      空白  空格
          \D    表示数字  
          \W    表示非字母 数字 下滑线
          \S    表示非空白  空格
          \.    表示统配符的意思也叫任意字符
          例子:str.match(/\d+/g) 在正则中:\d  ---  表示数字
    

    正则特性:

               1、懒只会找一次,后面的都不管
                    g :正则的一个选项,表示: 全局(查找,匹配)
                     i:忽略大小写
               2、笨、蠢  找数字的时候,把数字都拆分开了,不是找到一个就完事了
               3、贪:  一组中有多少字符都不分开
    

    使用正则测试敏感词过滤的小例子:

                   str.replace() ---如果说没有正则,replace()就是个废物
                   str.replace('原字符串','目标字符串');
                   str.replace(正则|字符串,'目标字符串');
    

    正则里或的表示方法:

           JavaScript里: 双杠表示或||    在正则中单个杠表示|  或的意思
           str.replace(正则|字符串,字符串|函数);
    

    正则里的修饰符:

            (1)  ^:表示行首  
            (2)  $:表示行尾
           正则里m表示多行模式:当前行的开头和结尾 单行模式:^行首、$行尾 表示就是整个字符串的开头和结尾
            选项:m ---多行模式  muti - line
            选项:  gi gm   *选项
             i,g,m使用时,可以直接写在一起
             replace()  可以连写
    

    正则里的量词:

              {n}       n个
              {n,m}     最少n个,最多m个
              {n,}      最少n个,最多不限
              {1,}      最少1个,最多不限
              {0,1}     最少0个,最多1个   --  有无
              {0,}      最少0个,最多不限 +
              {1,}      最少个,最多不限  ? 
              {0,1}     最少0个,最多1个
             * {0,}     最少0个,最多不限-- 不推荐使用
    

    正则里 []中括号:

              1)或  [ab]  --  a  或 b
                    [1a2d]   --1或a或2或d
                    [18]   --  1或8 //  'ad18sd  1kds  8sd  '
            2)范围
                [0-9]  从0到9
                [a-z]  小写字母
                [A-Z]  大写字母
                [a-z0-9A-Z]   3)排除^
                [^0-9]表示: 除了数字
                str.search(expr)str.match(expr)expr.test(str);  //测试  看 表达式和字符串是否能匹配上,如果能返回true,否则false
    

    正则的应用:

          匹配  固定电话:
          思路:    82323238   5727323    010-88234582    0476-5329878
          如果有-,前面是3或4位数字
          如果有-,后面是7或8位数字
          电话号一共不超过12位数字
          如果有区号,第一位是0,可以没有区号和区号可有可无
            1:有区号:第一位是0:后面是
            2:电话部分:第一位不是0    6-7位数字
              使用 .test  方法,本身有一些问题,  不太严谨  如果要用test,请一定要加上  /^ $/
              正则里点 .  和 | 使用或  一定要加括号
        步骤:
         1)用你的语言来翻译一下规则
         2)分段来考虑  固定电话:区号电话
         3)翻译成代码
    

    固定电话正则代码:

            var regx = /^(0[1-9]\d{1,2}\-)?[1-9]\d{6,7}$/;手机号:
            var regx = /^1[345789]\d{9}$/;邮箱:
            var regx = /^\w{1,30}@[0-9a-z\-]{2,20}(\.[a-z1-9]{2,3}){1,2}$/;年龄:
    

    var regx = /^(1[89])|([2-9]\d)|(100)$/;>

    相关文章

      网友评论

          本文标题:第七天正则表达式

          本文链接:https://www.haomeiwen.com/subject/idyzpttx.html