• 正则表达式的学习笔记


    正则体验

    在字符串中找到数据的数字

        //把下面字符串当中所有数字找到
        var str = 'adsfas12dfasdfcvxsfd232hggdgfsfdgsdg3453sdgsfdgfdsgsfdf454gsdfggs';
        
        // 方法一,循环遍历字符串获取匹配的数字
            function getNum(str) {
                var arr = [];
                var tem = "";
                for(var i=0,len=str.length;i<len;i++){
                    var ch = str.charAt(i); // charAt() 返回字符串中的n个字符
                    if(ch >= 0){
                        tem += ch;
                    }else {
                        if(tem){
                            arr.push(tem);
                            tem= "";
                        }
                    }
                }
                return arr;
            }
            var num = getNum(str)
            console.log(num.join('-')); //  12-232-3453-454
    
        // 方法二,正则表达式
            var reg = /d+/g; //  //: 正则的实例化方式; d:数字,+:一个或者多个; g: 全局匹配
            // match(regexp)方法; 将检索字符串string,以找到一个或多个与regexp匹配的文本,返回一个数组
            // 这个方法的行为很大程度上依赖于regexp是否具有性质g。
            console.log(str.match(reg).join('-')); //  12-232-3453-454
    
    

    使用正则一行代码搞定。


    正则语法

    // 实例化
     var reg = //;
      var reg = new RegExp();
    // =================================
    
    //  d 表示匹配数字
    //  + 表示至少匹配一个 
    //  g 表示全局匹配
    //  i 表示不区别大小写,正则默认是区分大小写
    
         var str = 'aa11bb22cc33dd44';
         console.log(str.match(/d/)); // ["1", index: 2, input: "aa11bb22cc33dd44", groups: undefined]
         console.log(str.match(/d+/)); // ["11", index: 2, input: "aa11bb22cc33dd44", groups: undefined]
         console.log(str.match(/d+/g)); //  ["11", "22", "33", "44"]
    
         var str2 = "javascript Java";
         console.log(str2.match(/java/)); // ["java", index: 0, input: "javascript Java", groups: undefined]
         console.log(str2.match(/java/g)); // ["java"]
         console.log(str2.match(/java/gi)); //  ["java", "Java"]
    
    
         //通过RegExp new出来的正则实例对象 ,传入的参数中的  需要转义 \
        var reg3 = /d+/g;  // reg3 等价于 reg 4  常用方式
        var reg4 = new RegExp('\d+','g'); // reg3 等价于 reg4
        var str3 = "qq234df34er";
        console.log(str3.match(reg3)); //["234", "34"]
        console.log(str3.match(reg4)); // ["234", "34"]
    
    
    

    正则相关的api

    
        /*
        正则相关的API
        test 用来验证字符串是否符合特定的规则,匹配返回true;否则返回false;
        exec() //用于检索字符串中的正则表达式的匹配
        参数:要检索的字符串
        返回值:一个数组,存放的是匹配的结果。如果没有找到匹配,值为null。
                数组的格式:第0个元素就是与表达式相匹配的文本
                           第1个元素是与regexp的第一个子表达式相匹配的文本(如果存在)。
                           第2个元素是与regexp的第二个子表达式相匹配的文本,以此类推。
                           数组的length属性声明的是数组中的元素个数。
                           index属性声明的是匹配文本的第一个字符的位置
                           input属性指的就是string
                           非全局模式调用RegExp对象的exec()方法时,返回的数组与调用方法String.match()返回的方法相同
        */
    
        /*
        字符串相关的API
        1、search()返回第一个与正则相匹配的子串的起始位置。如果没有找到任何匹配的子串,则返回-1。
        2、split()把字符串分割为字符串数组。
        3、match()找到一个或多个正则表达式的匹配。
        4、replace()替换与正则表达式匹配的子串。
        */
    
        var str = "hello 123";
        var str1 = "hello hi";
        var reg = /d+/g; // +号也可以写成 {2,8} 表示 2 到8位
        
        console.log(reg.test(str)); // true
        console.log(reg.test(str1));// false
    
    //     字符串相关的API ======================
    //   search() 的用法
         var reg2 = /javascript/;
         var reg3 = /Javascript/; // 默认区分大小写
         var reg4 = /javascript/i; // i 不区分大小写
         var reg5 = /javascript222/;
         var str2 = "hello javascript,this is Javascript!";
        console.log(str2.search(reg2)); // 6
        console.log(str2.search(reg3)); // 25
        console.log(str2.search(reg4)); // 6
        console.log(str2.search(reg5)); // -1
        // --------------------------------------------------------------------------------------
    // split() 的用法
    
         var str3 = 'zhangsan;lisi;wangwu';
         var str4 = 'zhangsan123lisi4256wangwu1zhaoliu';
         var arr = str3.split(';');
         console.log(arr); // ["zhangsan", "lisi", "wangwu"]
    
         var reg6 = /d+/g
         var arr2 = str4.split(reg6); // 用数字来做为分割的条件
        console.log(arr2); // ["zhangsan", "lisi", "wangwu", "zhaoliu"]
    
        
        //--------------------------------------------------------------
        // match()方法的使用
         var str5 = 'good good study day day up';
         var reg = /good/;
         var arr3 = str5.match(reg);
         //非全局匹配
         //第一项表示匹配到的数据;index表示匹配到的数据的索引;input表示整个字符串
         console.log(arr3);//["good", index: 0, input: "good good study day day up"]
         //全局匹配
         var reg7 = /good/g;
         console.log(str5.match(reg7));//["good", "good"]
        //-----------------------------------------------------
        //replace() 的用法,替换字符串
        var str6="Visit Microsoft! Tom Tom"
        var reg8 = /Microsoft/;
        var reg9 = /Tom/g;
        //把符合第一个参数规则的字符串替换成第二个参数
        console.log(str6.replace(reg8, "W3School")); // Visit W3School! Tom Tom
        console.log(str6.replace(reg9, "Jerry")); // Visit Microsoft! Jerry Jerry
    
        // 不用正则它只替换第一个,后面就不管了
        console.log(str6.replace('Tom', "Jerry")); //Visit Microsoft! Jerry Tom
        //-----------------------------------------------------
    
        var name = "Doe, John";
        //w表示任意的单词字符;
        //+表示一个或者多个
        //s表示空格
        //*零个或者多个
        //小括号什么意思?分组(子表达式)
        var reg = /(w+)s*, s*(w+)/;  //$1 $2 .....
        console.log(name.replace(reg, "$2 $1"));// John Doe  交换两个子表达式所匹配的内容
    
    

    转义字符

    
        /*
        转义字符:
        d 任何一个数字字符,等价于[0-9]
        D 任何一个非数字字符,等价于[^0-9]
        w 任何一个字母数字或下划线字符,等价于[0-9a-zA-Z_]
        W 任何一个非字母数字和下划线字符,等价于[^0-9a-zA-Z_]
        s 任何一个空白字符,包括换页符、换行符、回车符、制表符和垂直制表符,等价于[f
    
    	v]
        S 任何一个非空白字符,等价于[^f
    
    	v]
    
    
        ^表示以什么开始
        $表示以什么结束
        */
    
        //量词 + * ? {m,n}
        //+匹配一次或者多次
        //*匹配零次或者多次
        //?匹配零次或者1次
        //用来控制匹配的数量
    
          var reg = /[0-9]{2}/; // 表示0到9中的最少有一个
          var reg2 = /d/;
          var str = '11';
    //    console.log(reg.test(str)); // true
    //    console.log(reg2.test(str)); // true
        // --------------
        console.log(/[0-9]/.test(str)); // true 表示0到9中的任意一个数字
        console.log(/[0-9]+/.test(str)); // true 表示0到9中的至少有一个数字
        console.log(/[0-9]{1}/.test(str)); // true 表示0到9中的至少有一个数字
        console.log(/[0-9]{3}/.test(str)); // false 表示0到9中的至少有3个数字
        console.log(/[0-9]+/.test(str)); // true
    
  • 相关阅读:
    webpack:loader编写
    架构之路:从概念开始
    AtCoder Regular Contest 114(A-C)
    12-UE4-控件类型
    10-UE4-蓝图定义简介
    11-UE4-UMG UI设计器
    UE4-目录结构简介
    UE4-字符串
    官方Spring Boot starters整理
    Java是引用传递还是值传递?
  • 原文地址:https://www.cnblogs.com/ybixian/p/9662256.html
Copyright © 2020-2023  润新知