• 正则,从入门到精通


    1:正则要么匹配字符,要么匹配位置

    2:可以使用括号捕获数据。可以在api中分组引用

    3:横向模糊匹配是指 使用量词表示非固定的字符  /ab{2,4}c/   => 'abb'  'abbb'   'abbbb'

    4:纵向模糊匹配是指使用[abc] 表示可以是中括号中的某一个    /a[cbd]b/ =>   'acb' 'abb'   'adb'

    5:范围表示法[0123456abcdef] =>[0-6a-f]

    6:排除字符组  [^abc] 就是非abc   字符组开头是^表示取反。

    7:其他字符组的简写   

       d    ===   [0-9]

       D  ===   [^0-9]     非数字

       w  ===  [0-9a-zA-Z_]   数字字母下划线

      W  ====   [^0-9a-zA-Z_]    非数字,非字母,非下划线

      s   ====    [ v f]   空格 ,水平制表符 垂直制表符,换行符,回车符,换页符

      S   ===  [^ v f]  非空白符

      . 通配符    除了换行符,回车符,行分隔符,段落分隔符外的其他字符

     如果想匹配任何字符[dD]   [wW]    [^]  [sS]

    8:量词

      {m,} 至少m次

      ?等价于 {0,1} 至少1次

      {m}等价于{m} 出现m次

       + 等价于{1,} ,至少出现1次

       * 等价于 {0,}出现任意次

    9:贪婪匹配和惰性匹配

         量词后面拼?表示惰性匹配

         {m,n}? 

         {m,}?

          ??

         +?

         *?

          

    var regex = /d{2,5}?/g;
    var string = "123 1234 12345 123456";
    console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]


    10: 匹配位置

        有6个锚字符   ^ $  B  (?=p) (?!p)

        ^  -----   开头

       $  -----     结尾

         -----    单词边界  具体就是w  和W 之间的位置,包括w 和 ^  ,w 和$之间的位置

       B  --- --   非单词边界 具体就是w与w ,W与W,W与^,W与$之间的位置。

       (?=p)     其中p是一个子模式,即p前面的位置

             比如(?=a)

         var result = "dayu".replace(/(?=a)/g, '#');

            console.log(result); // => "d#ayu"

         (?!p)    非 上述

       参考文章https://juejin.cn/post/6844903487155732494#heading-18

        

  • 相关阅读:
    中国身份证号码验证
    防止盗链下载问题
    Microsoft .NET Pet Shop 4 架构与技术分析
    常用操作封装类
    ASP.NET 2.0页面框架的几处变化
    普通字符串与HTML相互转换的小经验
    HttpWebRequest实现读取天气预报信息
    事务回滚 c# .net代码
    CAJViewer,AdobeReader等阅读器实现金山词霸屏幕取词功能
    01背包问题动态规划详解
  • 原文地址:https://www.cnblogs.com/binglove/p/15421315.html
Copyright © 2020-2023  润新知