zoukankan      html  css  js  c++  java
  • 正则积累

    1 正则贪婪模式

    属于贪婪模式的量词,也叫做匹配优先量词,包括: 

    “{m,n}”、“{m,}”、“?”、“*”和“+”。 

    非贪婪

    “{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。 

    2 notepad++ 匹配单个汉字  https://zhuanlan.zhihu.com/p/33335629

      [x{4e00}-x{9fa5}]

      [^x{4e00}-x{9fa5}]  //除汉字之外的

    1. `/[u4e00-u9fa5]/`是错的,不要用二十年前的正则表达式了
    2. `/p{Unified_Ideograph}/u`是正确的,不需要维护,匹配所有汉字。这里`p`是 Unicode 属性转义正则表达式。
    3. `/p{Ideographic}/u` 和 `/p{Script=Han}/u` 匹配了除了汉字以外的其他一些字符,在「汉字匹配正则表达式」这个需求下,是错的。
    4. 目前 Chrome 和 Safari 支持 Unicode 属性转义正则表达式。对其他环境,使用 7.7 版本的 `@babel/env` 就可以自动根据浏览器规定打开支持。

     

    正则表达式排除某字符串的行

    ^(?!.*trigger(".+")).*$
    ^(?!.*select).+$  //匹配不含select的行
    ^(?!.*helloworld).*$  //匹配不含helloword的行

    ^((?!delete).)*$   查找不以delete 开始的行

    3  分组   详见https://www.cnblogs.com/wancheng7/p/8906015.html

    • 捕获型 ()
    • 非捕获型 (?:)
    • 正向前瞻型 (?=)
    • 反向前瞻型 (?!)

     ?=,?:,?! 

    a(?=b) 查找b前面的a


    (?<=a)b 查找a后面的b

    a(?!exp2) 查找后面不是b的a

    (?<!a)b查找前面不是a的b

    'adsaaa'.replace(/a(?=d)/g,'c')   // "cdsaaa"  非获取性匹配,只将后面有d的a替换成c

    'adsaaa'.replace(/a(?:d)/g,'c')   // "csaaa"  此时等同于/ad/,将ad替换成c
    'adsaaa'.replace(/a(?!d)/g,'c')   // "adsccc" 将后面不是d的a替换成c
    'adsaaa'.match(/a(?=d)/g)   // ["a"]
    'adsaaa'.match(/a(?:d)/g)   // ["ad"]
    'adsaaa'.match(/a(?!d)/g)   // ["a", "a", "a"]

      

    其中?:的用处主要是在有|的时候,很好用,例如a(?:d|r)匹配的就是ad或者ar

    (?<=pattern),?<!pattern)这两个js里现在都用不了

    参考:

    https://www.cnblogs.com/520yang/articles/7473596.html

    https://blog.csdn.net/xuyangxinlei/article/details/81359366

    https://blog.csdn.net/csm0912/article/details/81206848

     4 https://www.cnblogs.com/molinglan/p/8746510.html

  • 相关阅读:
    10.28
    10.29
    11.05周四
    数据库增删改查
    11.03Tuesday
    11.10
    连接数据库
    10.30
    11.04周三
    10.27
  • 原文地址:https://www.cnblogs.com/wolbo/p/11353186.html
Copyright © 2011-2022 走看看