正则表达式的使用

  1. RegExp:正则表达式对象

    • 正则表达式的定义:正则表达式就是定义字符串组成规则的表达式。使用场景比如,我们如果要做到对注册输入的信息进行校验就需要用到正则表达式。如果要验证我们写的正则表达式我们可以进入这个https://regex101.com/网址。这个网址的效果如下:

      正则表达式的使用_第1张图片

      正则表达式定义字符串的组成规则的语法如下:

      1.直接输入字符,那么这个它会匹配包含这个字符的单词。比如上面那个截图输入的se,就能匹配出下面那些单词。
      
      2.限定符?:?表示前面的那一个字符需要出现0次或者多次。比如你输入"used?"能匹配出use后面跟0个d或多个d的字符。比如这个"used?"就能匹配出“use”、“used”、“usedd”等等。
      
      3.*,比如ab*c,表示匹配包含abc的字符,其中b可以出现0或多次。所以可以匹配aabcg、ac、abbbc等等.
      
      4.+,比如ab+c,表示匹配包含abc的字符,其中b必须出现1或多次。所以它可以匹配kjabc、abbc、abc。但是不能匹配ac。
      
      5.{XX},比如a{2}c,效果和aac一样。你也可以这样a{2,6}c表示匹配包含aac或者aaac或者aaaac或者aaaaac或者aaaaaac的字符。a{2,}表示匹配包含aa或者包含aaa或者包含aaaa……的字符(这个a可以是2-无穷多个)。a{,5}表示匹配包括a的个数不超过5的字符。下面举一个例子:就比如an{2,}oj{1}这个正则表达式可以匹配afaannnnnnojakf、jalkannnojal等等,但是这个jalannoaks就不能匹配到,它这个n{2,}会尽量去匹配最多的n字符,懂我意思吧。
      
      6.(),比如(ab)+,表示这个ab这个整体必须出现1次或多次。你要是ab+表示匹配包含ab,且这里的b必须是1个以上的字符。所以(ab)+能匹配abc、ababc、kkabakj等。
      
      7.或,比如你输入a (cat|dog),表示匹配包含“a空格cat”或包含“a空格dog”的字符。所以这个aa catjakl、fafaa dogjkl等能被匹配到。要是没有括号,比如a cat|dog,那么能匹配到aa catjakl、adfdogfa等,即包含a cat或者包含dog的字符。
      
      8.[],比如[abc]表示匹配包含a或者包含b或者包含c的字符。[a-z]等同于写[abcde一直写到z]、[a-zA-Z0-9_]等同于写[abcde一直写到zABCD一直写到Z0123一直写到9_],即你匹配的字符里面至少得包含一个a到z或者A到Z或者0到9或者下划线。[a-zA-Z0-9_]也可以写为\w,他们效果是一样的。[^0-9]表示匹配所有不包含0到9的字符。
      
      9.元字符:\d、\w、\s、\D、\W、\S等。\d等同于[0-9],\w等同于[a-zA-Z0-9_],\s表示匹配包含1到多个“空白符或tab制表符或换行符的组合”。\D表示匹配所有非数字字符。\W表示匹配所有不包含单词字符的字符。\S表示匹配所有非空白字符。\W、\D、\S的功能你不清楚可以用那个网站试一试,这里的描述可能不是很准确。
      
      10..,“点”这个字符表示一个任意字符但是不包括换行符,包含制表符和空白符。比如a.t可以匹配到earths、wasting、constantly等。
      
      11.^,匹配行首,比如^a只会匹配开头是a的字符。
      
      12.$,匹配行尾,比如a$就只会匹配末尾是a的字符。注意一点:^a$想这样的开头是^且结尾是$的,表示整个字符串只能匹配字符串a,就算是前面后面都是a的字符串也不能被匹配到,比如这个ajafa就不能被匹配到,aa也不能被匹配到。^a{2,4}$能匹配到aa、aaa、aaaa,其他的都不能匹配到,比如a就不能被匹配到,aafjkaaa也不能被匹配到。aaaaaa也不能被匹配到。然后^w(6,12)$表示能匹配的字符串一定是6到12位的,且这个字符串里面的字符都是A-Z或者a-z或者0-9或者是下划线。
      
      13.在这个正则表达式中那些可以包含多个的字符的那些正则表达式会尽可能吃下多的字符。比如<.+>匹配的范围是<span><b>this is example<b><span>,整个,即,你正则表达式中的小于对应了开头的<span>的小于,然后你的.+会尽可能的去吃下更多的字符,直到吃不下,但是这个.+什么都能吃,所以它直接吃到了末尾的大于了。所以你要不匹配这么多这么办呢,你可以用一个?把贪婪匹配转为懒惰匹配。比如:<.+?>就能匹配到<span><b>this is example<b><span>中的<span><b><b><span>了,不会把this is example也匹配进去。
      
      

      想了解更多正则表达式的使用,看https://www.bilibili.com/video/BV1da4y1p7iZ/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=6c8703cbdfa7e6df8af2a7526767e928这视频,重点在视频的7.07之后的例子。

    • 正则对象:

      1. 创建(我们创建一个正则对象,这个正则对象里面封装一个正则表达式)
        • var reg = new RegExp(“正则表达式”);
        • var reg = /正则表达式/;
      2. 方法
        • test(参数):验证指定的字符串是否符合正则定义的规范。比如你“正则对象”.test(某个字符串)的作用就是判断这个字符串是不是符合这个正则对象封装的正则表达式定义的规则。
    • 要了解更多正则对象的使用,请参考https://www.runoob.com/jsref/jsref-obj-regexp.html这个网站。

    • 例子:

      DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Titletitle>
          <script>
              //创建方式1:
              var reg = new RegExp("^\\w{6,12}");//因为这个字符串的反斜线会被当作是转移字符的\,所以这种方式写正则表达式我们就得把正则表达式中的一根反斜线的地方都换为为双反斜杆
              //创建方式2:
              var reg2= /^\w{6,12}/;
      
              //把正则表达式对象直接弹出可以看到它的正则表达式内容。可以看出这两个正则对象都是表示\w{6,12}^这个正则表达式。
              alert(reg);//显示/^\w{6,12}/
              alert(reg2);//显示/^\w{6,12}/
      
              //test(参数)方法:验证指定的字符串是否符合正则对象中的正则表达式定义的规范。符合返回true,不符合返回false
              //比如我们要验证这个用户名username是否符合^\w{6,12}这个正则表达式定义的规范。我们可以这样:
              var username = "zhangsan";
              var flag = reg2.test(username);
              alert(flag);//这个“zhangsan”符合reg2这个正则表达式的规则。所以弹出true
      
          script>
      head>
      <body>
      
      body>
      html>
      

你可能感兴趣的:(正则表达式)