学习 Web APIs的最后一天!!!

96 阅读3分钟

正则表达式:

一.基本语法:

  • 正则语法对字符串的合法性进行效验,在正则看来所有内容都是字符串
  • 学习正则表达式就是学习它的元字符
  • 使用//定义正则表达式:let ref=/正则表达式/
  • 校验方法:正则表达式.test(字符串),返回true/false

1.定义正则表达式语法:

    <script>
        let 变量名 = /表达式/

        // 其中 /   / 是正则表达式字面量 
        //比如:
        let reg = /前端/

2.判断是否有符合规则的字符串:

  • test() 方法 用来查看正则表达式与指定的字符串是否匹配
    <script>
        // 语法:
        regObg.test(被检测的文字)
        // 比如:
        let str = "IT培训,前端开发培训,web前端培训,软件测试培训,产品经理培训"
        let reg = /前端/
        let re = reg.test(str)
        console.log(re)   //true
    </script>

如果正则表达式与指定的字符串匹配 ,返回true,否则false

  • exec() 方法 在一个指定字符串中执行一个搜索匹配 检索(查找)符合规则的字符串:
    <script>
        // 语法:
        regObg.exec(被检测的字符串)
        // 比如:
        let str = "IT培训,前端开发培训,web前端培训,软件测试培训,产品经理培训"
        let reg = /前端/
        let re = reg.exec(str)
        console.log(re)   //返回的是一个数组
    </script>

如果匹配成功,exec() 方法返回一个数组,否则返回null

3.字符串转数组:

    <script>
        // 我们在实际开发过程中,有很多需求要针对字符串做处理
        // js 帮我们封装了很多大量和实用 字符串方法
        // 先介绍一些

        // 转大写 转小写。
        // let msg = 'HELLODFDFDFDFDFD';

        // 广告 msg 大写
        // msg="HELLO";// 搞定  楼下大妈也会!!!  low 低级 不堪入目
        // console.log(msg.toUpperCase());

        // 转小写
        // console.log(msg.toLowerCase()); //转成小写

        // 字符串和数组很相似
        // 能不能把字符串 转成数组?
        const str = "abcdefg"; //=> ["a","b","c","d","e","f","g"]
      // // split("")   分割
    //   console.log(str.split(""));
    //   const str = 'a-b-c-d-e-f-g'; // ["a","b","c","d","e","f","g"]
    //   console.log(str.split('-'));

      // console.dir(str);

        /* 
        1 转大写  toUpperCase()
  
        2 转小写 toLowerCase()
  
        3 转数组 str.split('') 按照什么来分割你的字符串变成数组
         */
    </script>

4.数组转字符串:

    <script>
      // 数组 补充 常用
      //
      // const arr = ['a', 'b', 'c', 'd'];

      // console.log(arr.join('')); // join 数组转字符串
      // console.log(arr.join('-')); // a-b-c-d 数组转字符串

      // 连接  数组和数组之间连接
      // const arr1 = ['1', '2', '3'];
      // const arr2 = ['a', 'b', 'c'];
      // 将两个数组合并成一个数组
      // console.log(arr1.concat(arr2));

      //字符串也有一个 concat 也是表示合并
      const str1 = '123';
      const str2 = 'abc';
      // console.log(str1.concat(str2));// 很少用  有什么用? 当你的键盘 + 键坏  使用它 
      console.log(str1 + str2); // 更加简单好理解
    </script>

二.正则创建的建议:

  • 先占位后修饰
  • 修饰不能单独存在
  • 从左到右写

三.边界符:

边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)

  • 作用:限定匹配的字符长度

  • 表现形式:/^表达式$/

       <script>
          const str = `金来123`;
          // const reg = /梦想/; // 只要字符串中 包含有 梦想  返回true
    
          // 你检测的字符串 必须要以 “梦” 开头  以 “想” 结尾
          
          // const reg = /^金来$/; // 只能匹配 "金来"
          const reg = /^金来/; // `金来123`;
          // const reg = /金来$/; //  `1234323金来`; 
          // console.log(reg.test(str));
    
    
          /* 
          边界符 
          开头 ^ 
          结尾 $ 
           */
        </script>
    

四.元字符:

量词:

注意: 逗号左右两侧千万不要出现空格

​ 量词用来 设定某个模式出现的次数

  • *:修饰前面的字符出现任意多次

  • +:修饰前面的字符出现一次或多次

  • ?:修饰前面的字符出现0次或1次

  • {n}:修饰前面的字符出现n次

  • {n,m}:修饰前面的字符最少出现n次,最多m次

  • {n}:修饰前面的字符最少出现n次,最多没有限制

    例:

        <script>
            // const str="路飞";
            // const reg=/路飞/;
            // console.log(reg.test(str));
    
            //  *  表示 放在它前面那一个字符 可以出现0次或者多次
            // /^路*$/   => "",  路,路路,路路路
            // console.log(/^路*$/.test('')); // true
            // console.log(/^路*$/.test('路')); // true
            // console.log(/^路*$/.test('路路')); // true
            // console.log(/^路*$/.test('路路路')); // true
    
            // + 表示 放在它前面那一个字符 可以出现1次或者多次
            // console.log(/^路+$/.test(''));
            // console.log(/^路+$/.test('路'));
            // console.log(/^路+$/.test('路路'));
            // console.log(/^路+$/.test('路路路'));
    
            // ? 表示出现0次或者1次
            // console.log(/^路?$/.test(''));// true
            // console.log(/^路?$/.test('路')); // true
            // console.log(/^路?$/.test('路路')); // false
            // console.log(/^路?$/.test('路路路')); // false
    
            // {n} 放在它前面的那一个字符 出现n次
            // console.log(/^路{2}$/.test('')); // false
            // console.log(/^路{2}$/.test('路')); // false
            // console.log(/^路{2}$/.test('路路')); // true
            // console.log(/^路{2}$/.test('路路路')); // false
    
            // {n,} 放在它前面的字符 最少出现n次
            // console.log(/^路{2,}$/.test('')); // falsh
            // console.log(/^路{2,}$/.test('路')); // falsh
            // console.log(/^路{2,}$/.test('路路'));// true
            // console.log(/^路{2,}$/.test('路路路')); // true
    
            // {n,m} 放在它前面的字符 最少出现n次,最大是m次
            console.log(/^路{0,2}$/.test('')); // true
            console.log(/^路{0,2}$/.test('路'));  // true
            console.log(/^路{0,2}$/.test('路路')); // true
            console.log(/^路{0,2}$/.test('路路路'));  // false 
    
        </script>
    </body>
    

占位符:

字符类型:数字、大写字母、小写字母、空字符、下划线、其他字符

字符类1: [ ] 里面加上 - 连字符 例:

  • [a-z] 表示 a 到 z 26个英文字母都可以

  • [a-zA-Z] 表示大小写都可以

  • [0-9] 表示 0~9 的数字都可以

**字符类2: ** [ ] 里面加上 ^ 取反符号

  • 【^a-z】匹配除了小写字母以外的字符
  • 注意要写到中括号里面

字符类3

  • . (点)匹配除换行符之外的任何单个字符
    <script>
        // [ab]  => 可以匹配 a  或者 b
        console.log(/[ab]/.test('a'));// true
        console.log(/[ab]/.test('b'));// true
        console.log(/[abc]/.test('c'));// true

        // 表示 a-z 任意的一个字母
        console.log(/[a-z]/.test('c'));// true
        console.log(/[a-z]/.test('d'));// true
        console.log(/[a-z]/.test('123'));// false
        console.log(/[a-d]/.test('a'));// true
        console.log(/[a-d]/.test('g'));// false

        // 0-9 任意的一个数字
        console.log(/[0-9]/.test("1"));// true
        console.log(/[0-9]/.test("2"));// true
        console.log(/[0-9]/.test("0"));// true

        // A-Z
        console.log(/[A-Z]/.test("a"));// false
        console.log(/[A-Z]/.test("B"));// true

        // 同时满足 0-9a-zA-Z
        console.log(/[0-9a-zA-Z]/.test('1'));// true
        console.log(/[0-9a-zA-Z]/.test('a'));// true
        console.log(/[0-9a-zA-Z]/.test('A'));// true
        console.log(/[0-9a-zA-Z]/.test(' '));// false
    </script>
</body>
  • \d:匹配0-9之间的任意数字,相当于[0-9]
  • \D:匹配所有0-9以外的字符,除了0至9外都行,相当于【^0-9】
  • \w:匹配任意的字母、数字和下划线,相当于[A-Za-z0-9]
  • \W:除所有的字母、数字和下划线以外的字符,相当于【^A-Za-z0-9】
  • \s:匹配空格(包括换行符、制表符、空格符等),相当于【t\r\n\v\f】
  • \S:匹配非空格的字符,相当于【^t\r\n\v\f】
    <script>
        //    . 表示除了(换行符之外)任意字符
        console.log(/路/.test('飞')); // false
        console.log(/./.test('飞')); // true
        console.log(/路.飞/.test('路大飞')); // true
        console.log(/路.飞/.test('路小飞')); // true
        console.log(/路.飞/.test('路中飞')); // true
        console.log(/路.飞/.test('路不飞')); // true
        console.log(/路.飞/.test('路飞')); // false
        console.log(/路.飞/.test('路 飞')); // false

        //   \d 表示数字
        console.log(/\d/.test("路飞"));// false

        console.log(/\d/.test("1路飞"));// true
        console.log(/\d/.test("路3飞"));// true

        //   \D 不是数字之外的任意1个字符
        console.log(/\D/.test("123"));// false
        console.log(/\D/.test("12a3"));// true
        console.log(/\D/.test("12a3"));// true

        //   \w  字母、数字、下划线
        console.log(/\w/.test("123"));//  true
        console.log(/\w/.test("%%"));//  false
        console.log(/\w/.test("%1%"));//  true
        console.log(/\w/.test("%a%"));//  true
        console.log(/\w/.test("%_%"));//  true

        //   \W  除去了 字母 、数字、下划线 之外字符
        console.log(/\W/.test("123"));// false
        console.log(/\W/.test("1%23"));// true

        //   \s  匹配空格
        console.log(/\s/.test("123"));// false
        console.log(/\s/.test("1 23"));// true

        //   \S 除了空格之外的字符
        console.log(/\S/.test('123'));// true
        console.log(/\S/.test(' '));// false
        console.log(/\S/.test('   '));// false
    </script>

转义:\

将元字符当成普通字符来处理

修饰符:

修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等

    <script>
        //语法:
        /表达式/修饰符
        
        console.log(/a/i.test('a')); //true
        console.log(/a/i.test('A')); //true
    </script>
  • i 是单词 ignore 的缩写,正则匹配时字母不区分大小写
  • g 是单词 global 的缩写,匹配所有满足正则表达式的结果

replace 替换:

    <script>
        let str = '天天 今天请吃饭';

        // 吃饭 -> 上天台
        // "字符串".replace("待替换文字","替换什么样")    返回一个新的字符串
        let newStr = str.replace('吃饭', '上天台');
        console.log(newStr);
    </script>

正则替换:

    <script>
        let str = '天天 HEIGHT 180 ';

        // 将数字 替换成 *
        // str.replace("支持正则的方式来匹配文字","要替换成什么样");
        // str = str.replace(/\d+/, '*');// 找到一个或者多个数字,然后只替换成一个 * 
        // str = str.replace(/\d/g, '*');// g 属于正则中的 修饰符 表示 全局 global 
        // console.log(str);

        //  把英文字母替换成 * 
        // str=str.replace(/[a-zA-Z]/g,"*")
        str = str.replace(/[a-z]/gi, "*") // i ignore忽略  忽略大小写 
        console.log(str);
    </script>