正则表达式(看必会系列)

Posted 工厂函数

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式(看必会系列)相关的知识,希望对你有一定的参考价值。

在开始正则学习以前,我们必须了解以下几个问题。

  1. 什么是正则表达式?

    1. 正则表达式是js中用来检索字符串中是否有匹配规则的一个对象

      1. 正则表达式是针对字符串的

      2. 正则表达式是一个js对象

  2. 正则表达式在哪里有应用

    1. 正则表达式一般用在表单里居多。比如,填写注册信息是有时会提示输入信息不合法或者首字母必须大写,必须包含数字字母下划线之类的提示信息。这里就用到了正则表达式。

  3. 如何创建正则表达式

    1.  var exeg=new RegExp("检索内容","修饰符")

    2. var exeg=/检索内容/修饰符

  4. 如何使用正则呢?

      第一种:


         var exeg=new RegExp("e");

          var str="hello wolrd";


         //查找字符串中是否有e字符,有则返回true,没有返回false

         console.log(exeg.test(str))  true


         //查找字符串中是否有e字符,有则返回所在索引,无则返回-1

          console.log(exeg.exec(str)) 1


        //使用abc修改原有正则表达式

         console.log(exeg.compile(/abc/))

    第二种

       var str="hello wolrd";

       var exeg=/e/;


       //查找字符串中是否有e字符,有则返回true,无则返回false

       console.log(exeg.test(str))  true


      //查找字符串中是否有e字符,有则返回所在索引,无则返回-1

      console.log(exeg.exec(str)) 1


     //使用abc修改原有正则表达式e

     console.log(exeg.compile(/abc/))


  5. 正则表达式的基本语法

    1. 修饰符

      1. i:忽略大小写字母

            ar str="hello wolrd";


            var exeg=/E/;

            console.log(exeg.test(str))//false


            var exeg=/E/i;

            console.log(exeg.test(str))//true


      2. g:全局查找(无论有没有,都会把字符串检索完)

           ar str="hello wolrd";


           var exeg=/o/;

          //找到第一个o之后,后面的就不会继续了

           console.log(str.match(exeg))//o


          var exeg=/o/g;

         //找到第一个o之后,因为you修饰符g后面的会继续执行了

          console.log(str.match(exeg))//o  o


      3. m:多行匹配

      4. ar str=/hello\nwolrd/;


        var exeg=/^w/;

        console.log(exeg.test(str))//false;


        var exeg=/^w/m;

        //因为\n是换行符,而w字符处于第二行的开头

        console.log(exeg.test(str))//true;


    2. 元字符

      1. ^:在正则中表示以什么开头,在集合中表示除了集合之内的

      2. var exeg=/^a/;


        var str="abcd";

        console.log(exeg.test(str))//true


        var str="babcd";

        console.log(exeg.test(str))//false

        ----------------------------------------------------------------

        var exeg=/[^abcd]/;


        var str="abcde";


        //字符e不在集合以内,所以符合

        console.log(exeg.test(str))//true,


        var str="babcd";

        console.log(exeg.test(str))//false


      3. $:在正则中表示以什么结尾

      4. var exeg=/a$/;


        var str="abcda";

        console.log(exeg.test(str))//true


        var str="babcd";

        console.log(exeg.test(str))//false


      5. |:表示或的关系

      6. var exeg=/hello|wolrd/;


        var str="hello word";

        console.log(exeg.test(str))//true,匹配hello


        var str="hell world";

        console.log(exeg.test(str))//true,匹配world

      7. .:任意字符

      8. var exeg=/./;


        var str="hello word";

        console.log(exeg.test(str))//true,


        var str="1234566";

        console.log(exeg.test(str))//true,


      9. \:表示转译

      10. var exeg=/\./;

        备注:本来.在正则中表示任意字符,但是在\的作用下,就变成了实际意义的.,不在表示任意字符

        var str="helloword";

        console.log(exeg.test(str))//false,因为没有点


        var str="hell.world";

        console.log(exeg.test(str))//true,有点


      11. \d:表示0-9的数字

      12. var exeg=/\d/;


        var str="helloword";

        console.log(exeg.test(str))//false,因为没有数字


        var str="hell3world";

        console.log(exeg.test(str))//true,有数字3


      13. \D:表示非数字

      14. var exeg=/\D/;


        var str="helloword";

        console.log(exeg.test(str))//true,因为没有数字


        var str="hell3world";

        //因为除了3之外还有别的英文字符

        console.log(exeg.test(str))//true,

      15. \w:表示单词字符

      16. var exeg=/\w/;

        备注:单词字符包含字母,数字和下划线

        var str="helloword";

        console.log(exeg.test(str))//true,因为没有数字


        var str="hell3world";

        //因为除了3之外还有别的英文字符

        console.log(exeg.test(str))//true,

      17. \W:非单词字符

      18. var exeg=/\W/;


        var str="helloword";

        console.log(exeg.test(str))//false,因为没有数字


        var str="hell3world";

        console.log(exeg.test(str))//false,因为除了3之外还有别的英文字符

      19. \s:表示空白符

      20. var exeg=/\s/;


        var str="hello word";

        console.log(exeg.test(str))//true,因为有空格


        var str="hell3world";

        console.log(exeg.test(str))//false,

      21. \S:表示非空白符

      22. var exeg=/\S/;


        var str="helloword";

        console.log(exeg.test(str))//true,因为有空格


        var str="hell3world";

        console.log(exeg.test(str))//true,


    3. 量词



        • {x,}

            var str="heoword";

          var exeg=/el{1,}o/;
          console.log(exeg.test(str))//false,因为l至少出现一次

        • {x,y}

            

          var str="helloword";
          var exeg=/el{1,3}o/;
          console.log(exeg.test(str))//false,因为l可以有1-3个

        • +:至少匹配一次

            var str="helloword";

          var exeg=/el+o/;
          console.log(exeg.test(str))//true,因为有连续两个ll

          var exeg=/^el+o$/;
          console.log(exeg.test(str))//false,因为字符串不是以e开头,

        • *:匹配零次或者多次

            var str="heoword";

          var exeg=/el*o/;
          console.log(exeg.test(str))//true,因为l可以不出现

          var str="helloword";
          var exeg=/el*o/;
          console.log(exeg.test(str))//true,因为ll可以有多个

        • ?:匹配零次或者1次

            

            var str="heoword";

          var exeg=/el?o/;
          console.log(exeg.test(str))//true,因为l可以不出现

          var str="helloword";
          var exeg=/el*o/;
          console.log(exeg.test(str))//false,因为ll不可以有多个

        • {}

          • {x,}

              var str="heoword";

            var exeg=/el{1,}o/;
            console.log(exeg.test(str))//false,因为l至少出现一次


          • {x,y}

              

            var str="helloword";
            var exeg=/el{1,3}o/;
            console.log(exeg.test(str))//false,因为l可以有1-3个


      • 分组和$n

          var str="hello wolrd";

        var exeg=/^hello|world$/;
        console.log(exeg.test(str))//true

        var exeg=/^(hello)|world)$/;
        console.log(exeg.test(str))//false


        var exeg=/^(\w)\s(\w))$/;
        console.log(str.replace(exeg,"$2 $1"))//world  hello => $1=hello  $2=world


以上是关于正则表达式(看必会系列)的主要内容,如果未能解决你的问题,请参考以下文章

Java 8新特性:学习如何使用Lambda表达式,一看必懂

《正则表达式必知必会》读书笔记

《MySQL必知必会学习笔记》:正则表达式

正则表达式必知必会小总结

《正则表达式必知必会》 笔记

正则表达式必知必会