阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      JavaScript 正则基础

      正则表达式的基础

      • 正则是什么
      • 如何创建一个正则
      • 如何学习正则
      • 正则的转义

      1、正则是什么?

      • 正则:它就是一个规则,用来处理字符串的一个规则(正则就是用来处理字符串的)

      • 原理:

        • 1)匹配 判断一个字符串是否符合我们制定的规则->test:reg.test(str)

          var reg=/\d+/; console.log(reg.test(“朱”));//false console.log(reg.test(“1”));//true console.log(reg.test(1));//true console.log(reg.test(“朱朱朱111”));//true

        • 2)捕获 把字符串中符合我们正则规则的内容捕获到->exec:reg.exec(str)

          var reg=/\d+/; console.log(reg.exec(“朱”));//null console.log(reg.exec(“1”));//[“1”, index: 0, input: “1”] console.log(reg.exec(“朱朱朱111”));//[“111”, index: 3, input: “朱朱朱111”]

          正则捕获,如果比配,返回捕获匹配到了数据;如果不匹配,返回null;

      2、如何创建一个正则?

      • 字面量方式:

        var reg = /\d/;

      • 实例创建方式:

        var reg = new RegExp("");

      正则的两种创建方式是有区别的

        在字面量方式中,我们//之间包起来的所有的内容都是元字符,有的具有特殊的意义,大部分都是代表本身含义的普通的元字符

        var name = "zhuan";
        var reg = /^\d+"+name+"\d+$/g;
        console.log(reg.test("2015zhuan2016"));//->false
        console.log(reg.test('"2015"""zhuan2016""'));//->false
        console.log(reg.test('2015"""nameeeee"2016'));//->true
      

      对于这样的需求,我们只能使用实例创建的方式了

          var name = "zhuan";
          // var reg = /^\d+"+name+"\d+$/g;
          var reg = new RegExp("^\\d+" + name + "\\d+$", "g");
          console.log(reg.test("2015zhuan2016"));//->true
          console.log(reg.test('2015"""nameeeee"2016'));//->false
      

      字面量方式和实例创建的方式在正则中的区别?

      • 1)字面量方式中出现的一切都是元字符,所以不能进行变量值的拼接,而实例创建的正则表达式可以使用变量;
      • 2)字面量方式中直接写\d就可以,而在实例中需要把它转译 \d

      要注意的是,传递给 RegExp 构造函数的两个参数都是字符串(不能把正则表达式字面量传递给 RegExp 构造函数)。由于 RegExp 构造 函数的模式参数是字符串,所以在某些情况下要对字符进行双重转义。所有元字符都必须双重转义,那些已经转义过的字符也是如此,例如 \n (字符\在字符串中通常被转义为\,而在正则表达式字符串中就 会变成\\)。

      3、如何学习正则?

      var name = "zhuan";
      // var reg = /^\d+"+name+"\d+$/g;
      var reg = new RegExp("^\\d+" + name + "\\d+$", "g");
      
      console.log(reg);
      console.dir(reg);//顺着原型链查找有哪些方法
      console.dir(RegExp.prototype);//正则类的原型
      

      4、正则转义

      与其他语言中的正则表达式类似,模式中使用的所有元字符都必须转义。正则表达式中的元字符包括:

      ( [ { \ ^ $ | ) ? * + .]}

      这些元字符在正则表达式中都有一或多种特殊用途,因此如果想要匹配字符串中包含的这些字符,就必须对它们进行转义;

      //匹配第一个"bat"或"cat",不区分大小写
      var pattern1 = /[bc]at/i;
      console.log(pattern1.test("bat"));      //true
      console.log(pattern1.test("cat"));      //true
      console.log(pattern1.test("[bc]at"));   //false
      
      //匹配第一个" [bc]at",不区分大小写
      var pattern2 = /\[bc\]at/i;
      console.log(pattern2.test("bat"));      //false
      console.log(pattern2.test("cat"));      //false
      console.log(pattern2.test("[bc]at"));   //true
      
      //匹配所有以"at"结尾的 3 个字符的组合,不区分大小写
      var pattern3 = /.at/gi;//注意index的变化
      console.log(pattern3.exec("[bc]at"));   //["]at", index: 3, input: "[bc]at"]
      console.log(pattern3.exec("bat"));      //null
      console.log(pattern3.exec("cat"));      //["cat", index: 0, input: "cat"]
      
      //匹配所有".at",不区分大小写
      var pattern4 = /\.at/gi; 
      目录
      目录