• 正则


    一.正则表达式能干什么?

      1.从大段的文字中找到符合规则的内容

      2.判断某个字符串是否完全符合规则

    二.字符组-- [] 写在中括号中的内容,都出现在下面的某一个字符的位置上都是符合规则的

       [0-9] 匹配数字
       [a-z] 匹配小写字母
       [A-Z] 匹配大写字母
       [a-zA-Z] 匹配大小写字母
       [a-zA-Z0-9] 匹配大小写字母+数字
       [a-zA-Z0-9_] 匹配数字字母下滑线

    三.元字符

      w 匹配数字字母下滑线 word关键字 [a-zA-Z0-9_]
      d 匹配所有的数字 digit [0-9]
      s 匹配所有的空白符 回车/换行符 制表符 空格 space [ ]
      匹配换行符 回车
      匹配制表符 tab
      匹配空格
      W D S 和w d s取反
      [sS] [dD] [wW]是三组全集 意思是匹配所有字符
       表示单词的边界

    四.和转义字母相关的 元字符
      w d s( )  W D S

      ^ $

      ^ 匹配一个字符串的开始

      $ 匹配一个字符串的结束

      . 表示匹配 除换行符之外的所有字符

      [] 只要出现在中括号内的内容都可以被匹配

      [^] 只要不出现在中括号中的内容都可以被匹配

      有一些有特殊意义的元字符进入字符组中会回复它本来的意义 : . | [ ] ( )

      a|b 或 符合a规则的或者b规则的都可以被匹配

        如果a规则是b规则的一部分,且a规则比b规则要苛刻/长,就把a规则写在前面,将更复杂的更长的规则写在最前面

      () 分组 表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组

    五.量词

       {n}表示 这个量词之前的字符出现n次
       {n,} 表示这个量词之前的字符至少出现n次
       {n,m} 表示这个量词之前的字符出现n-m次
       ? 表示匹配量词之前的字符出现 0次 或者 1次 表示可有可无
       + 表示匹配量词之前的字符出现 1次 或者 多次
       * 表示匹配量词之前的字符出现 0次 或者 多次

    六. 正则表达式的匹配特点 : 贪婪匹配
      它会在允许的范围内取最长的结果
      非贪婪模式/惰性匹配 : 在量词的后面加上?
         .*?x 匹配任意非换行符字符任意长度 直到遇到x就停止

    ?在正则中的作用:

    1.本身作为量词元字符,出现0-1次。 var reg=/d?/; ->0-9之间的一个数字,出现0次或者1次

    2.出现在量词元之后,取消捕获的贪婪性。

    注:

    let reg = /d+/g

    let box = "AAAAA2019BBBBB2020CCCCC"

    console.log(box.match(reg)) //结果为["2019", "2020"]

    正则是匹配到数字就行,原本应该是2就行,但结果是2019,这就是贪婪性,把后面连着的数字都捕获到了;
    然后被字母BBBBB中断,但是正则加了g修饰符,全局匹配,所以会继续往后找,所以就继续找到了2020。

    取消贪婪性的方法:去掉+加号;或者在 + 后添加?

     

    3.  ?: 对于分组来说,是只匹配,不捕获

    var reg=/tengxun(d )/g;
    var str="tengxun2015~~~tengxun2016~~~";
    reg.exec(str) ->["tengxun2015","2015"...]
    reg.exec(str) ->["tengxun2016","2016"...]
    var reg=/zhufeng(?:d )/g;
    var str="tengxun2015~~~tengxun2016~~~";
    reg.exec(str) ->["tengxun2015"...]
    reg.exec(str) ->["tengxun2016"...]

    4、?= 正向预查 / ?!负向预查
    /tengxun(?=1|2)/ 把符合后面是1或者2,前面是tengxun的"tengxun"匹配到 ->"tengxun1",我们匹配的是"tengxun",如果是"tengxun3",我们是匹配不到"tengxun"的
    /tengxun(?!1|2)/ 把符合后面不是1或者2,前面是tengxun的"tengxun"匹配到

    ?:的用法:

    https://blog.csdn.net/ningyanggege/article/details/105515103

  • 相关阅读:
    AspNetCore网关集成Swagger访问使用IdentityServer保护的webapi项目
    在CentOS部署AspNetCore网站
    使用Docker发布Asp.Net Core程序到Linux
    Window环境下使用多个Git账号(github,gitee,gitlab,gogs等)
    在.netcore webapi项目中使用后台任务工具Hangfire
    WebApi 全局异常与局部异常
    eclipse中jsp页面Invalid location of tag 解决办法分析小结
    win7 64位机ODBC的数据源DSN添加和移除问题
    jsp页面has already been called for this response错误解决方法。
    解决java图形界面label中文乱码
  • 原文地址:https://www.cnblogs.com/lyqf/p/14214945.html
Copyright © 2020-2023  润新知