正则表达式总结(上)

正则,功能十分强大,其中参杂着很多规则,看起来很复杂,让人恶心,一直以来,对于正则,项目中也只是简单的使用,一般使用正则表达式工具,直接copy。但是最近在源码学习中,觉得有必要深入梳理一下正则相关的知识,真正的 '勇士',必须要勇于面对,来吧,搞起!!

下面,主要从两个大方面,进行总结 

   1.是什么

   2. 怎么用(相关语法,特性)

 

一.  正则是什么

         正则表达式他的操作对象是字符串

  正则表达式用于字符串查找,只是可以更加高级的查找,查找之后可以按需直接使用或替换等。比如在字符串“abacadabvcababacad”中查找a:

  在JavaScript语法中,可以  'abacad'.search('a');      但是如果查询条件是下面的条件,用普通的查询就不能完成了。

       要求查找a,什么样的a呢?后面必须是b的a。这正是正则表达式的用武之地

二.  正则怎么用

        关于正则的使用,我准备从以下方面分别总结

  1. 创建正则表达式
  2. 正则的基本语法
  3. 正则的修饰符(标志位)
  4. 正则语法中的量词
  5. 正则中涉及的属性和方法
  6. 正则中的贪婪匹配和惰性匹配
  7. 正则中的分组和反向引用
  8. 正向前瞻,反向前瞻

  1.创建正则表达式的三种方式

  <script>
    let str = 'abch abc';
    // 第一种方式
    let regexp = /h/g;   // 直接写通过/ /
    // 第二种方式
    let regexp = new RegExp(/h/, 'g'); // 第一个参数是表达式,第二个是修饰符
    // 第三种方式
    let regexp = new RegExp('h', 'g');
  </script>

 2. 正则表达式中的基本语法

   

  根据以上对应的解释,大家可以在正则表达式工具中,测试一下,推荐一款谷歌插件fehelper,可以在这个插件的正则表达式工具中测试

3.正则表达式中的修饰符

           “/正则表达式/修饰符”  或者

           “var r = new RegExp(正则表达式, 修饰符);”

          并且一次可以使用多个修饰符。

    正则中常用的有三种修饰符

       1、ignoreCase,简写为 i

           正则加上 i,那么就 不区分大小写 

         

     2、global,简写为 g

         正则加上 g,就会 全局匹配

     3、muitiline,简写为 m

       正则加上 m,就会多行匹配,而往往多行匹配也要加上 g 才行

       那或许你有疑问了,多行匹配我直接g去匹配全局不就完了,干嘛还加上m呢??? 确实这样,

       但是,如果你想匹配多行的开头,那么这个m就有用了

       4.另外还有,大家可以了解一下

       

4.正则中的量词

n+   匹配任何包含至少一个 n 的字符串。匹配一个或多个前导字符(前导字符就是紧挨着+的前一个字符

n*    匹配任何包含零个或多个 n 的字符串。前导字符有没有都行

n?    匹配任何包含零个或一个 n 的字符串。

n{X} 匹配包含 X 个 n 的序列的字符串。

n{X,Y} 匹配包含 X 到 Y 个 n 的序列的字符串,包括X和Y个

n{X,} 匹配包含至少 X 个 n 的序列的字符串。

5.正则的属性和方法

1.关于正则的属性,和上边的修饰符有些关系

  • 属性 source

            返回正则的字符串形式

             

  •    属性 ignoreCase

            返回 当前正则是否设置 忽略大小写

            

  • 属性 multiline

          返回 当前正则是否设置 多行匹配

          

  •  

    属性 globa

     

    返回 当前正则 是否设置 全局匹配 

         

  2.正则的方法,如下图

  • exec

          找出字符串中的 匹配项返回一个数组,数组 包含 第一个匹配项,index(匹配项在字符串中的位置),input(匹配的字符串)

          exec 需要记住两个点

            1、常用于正则捕获时, 捕获就是把特定的字符串抓出来,在后面会详细说

            2、不管是否设置 全局搜索 g,都只会返回 一个匹配项

                      1. 没有设置全局匹配g  ,不管你调用多少次exec(),返回的始终是匹配到的第一项

                         

                     2.设置了全局匹配g,那么  exec 会在字符串上 继续 去匹配

                             

  • test

         验证字符串是否可以匹配正则,返回 布尔值,常用于表单验证

                 

  • match

        这个方法,返回的东西,跟是否设置全局有关

        1.没有设置全局时,返回的和exec的返回一毛一样

            

      2.设置全局后

      

  • search

        

           返回所在的起始位置,如果找不到,返回-1

  • replace

       正则替换,replace

      

  • split

       把不是匹配项的放在一个数组里面

           

     和字符串的split方法一样,但是使用正则可以处理更复杂的情况

 

当前文章总结了前五条,后边关于正则的贪婪匹配,惰性匹配,分组和反向引用,正向前瞻以及反向前瞻,在下一篇文章👇👇👇

正则表达式总结(下)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值