zoukankan      html  css  js  c++  java
  • 正则表达式 记录以备查询

    . 匹配除换行符以外的任意字符

    w 匹配字母或数字或下划线或汉字
    s 匹配任意的空白符   s匹配任意的空白符,包括空格,制表符(Tab),换行符,中文全角空格等
    d 匹配数字
     匹配单词的开始或结束
    ^ 匹配字符串的开始
    $ 匹配字符串的结束
    
    s:空白字符(包含:空格符,制表符,回车符,换行符,垂直换行符,换页符)
    S:非空白字符
    
    :换行符
    
    :回车符
    :单词边界
    B:非单词边界
    	:制表符
    . :表示除了
    外的所有字符
    量词(以下n为代表数量的词)
    n+:可以出现1到无数次

      * 重复零次或更多次
      + 重复一次或更多次
      ? 重复零次或一次
      {n} 重复n次
      {n,} 重复n次或更多次
      {n,m} 重复n到m次

      注释: 只不过{2}匹配只能刚好重复2次,{5,12}则是重复的次数不能少于5次,不能多于12次,否则都不匹配。

      

       反义  

      W 匹配任意不是字母,数字,下划线,汉字的字符
       S 匹配任意不是空白符的字符
       D 匹配任意非数字的字符
       B 匹配不是单词开头或结束的位置
       [^x] 匹配除了x以外的任意字符

      

    字符转义   要查找本身,你也得用\  如 

    [a-z]{1,}\.[a-z]{2,3}
    

      

    在方括号[]里列出它们就行 如

    [aeiou]就匹配任何一个英文元音字母,[.?!]匹配标点符号(.或?或!)

      如 :

    (?0d{2}[) -]?d{8} 匹配 (010)88886666,或022-22334455,或02912345678等

    一、分支条件

      用|把不同的规则 | 分隔开

    var reg4 = /d{5}-d{4}|d{5}/
    console.log(reg4.exec('12123-565'))
    

    将会从左到右地测试每个条件,如果满足了某个分枝的话,就不会去再管其它的条件了。

    var reg5 = /d{5}| d{5}-d{4}/
    console.log(reg5.exec('12123-565'))

    二、分组

    小括号来指定子表达式,可以指定这个子表达式的重复次数

    (d{1,3}.){3}d{1,3}是一个简单的IP地址匹配表达式。

         要理解这个表达式,请按下列顺序分析它:

             d{1,3}匹配1到3位的数字,(d{1,3}.){3}匹配三位数字加上一个英文句号

             (这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(d{1,3})。

    三、后向引用

    一个更复杂的例子:(?<=<(w+)>).*(?=</1>)

    匹配不包含属性的简单HTML标签内里的内容。

    (?<=<(w+)>)指定了这样的前缀:被尖括号括起来的单词(比如可能是<b>),然后是.*(任意的字符串),最后是一个后缀(?=</1>)。

    注意后缀里的/,它用到了前面提过的字符转义;1则是一个反向引用,引用的正是捕获的第一组,前面的(w+)匹配的内容,

    这样如果前缀实际上是<b>的话,后缀就是</b>了。整个表达式匹配的是<b>和</b>之间的内容(再次提醒,不包括前缀和后缀本身)。

    四、宽度断言

    (?<=s)d+(?=s)匹配以空白符间隔的数字(再次强调,不包括这些空白符)。

    w+(?=ing),匹配以ing结尾的单词的前面部分(除了ing以外的部分),如查找I'm singing while you're dancing.时,它会匹配sing和danc。
    (?<=re)w+会匹配以re开头的单词的后半部分(除了re以外的部分),例如在查找reading a book时,它匹配ading。 
    d{3}(?!d)匹配三位数字,而且这三位数字的后面不能是数字;((?!abc)w)+匹配不包含连续字符串abc的单词。 
    2[0-4]d(?#200-249)|25[0-5](?#250-255)|[01]?dd?(?#0-199)。
    

     

    五、注释

    六、贪婪与懒惰

    *? 重复任意次,但尽可能少重复
    +? 重复1次或更多次,但尽可能少重复
    ?? 重复0次或1次,但尽可能少重复
    {n,m}? 重复n到m次,但尽可能少重复
    {n,}? 重复n次以上,但尽可能少重复

    七、正则方法:     

    reg.test(str)
    reg.exec(str)
    

      

     字符串 对正则方法: 

     str.search(reg) 返回 index
     str.match(reg)  返回匹配的数组
     str.replace(reg,'$3 - $2 - $1') 
    

      

    以上是看到一个微博 记录以便以后学习

    转看 https://www.2cto.com/kf/201402/280207.html

        https://www.jb51.net/tools/zhengze.html

     
  • 相关阅读:
    BF算法和KMP算法
    Python课程笔记 (五)
    0268. Missing Number (E)
    0009. Palindrome Number (E)
    0008. String to Integer (atoi) (M)
    0213. House Robber II (M)
    0198. House Robber (E)
    0187. Repeated DNA Sequences (M)
    0007. Reverse Integer (E)
    0006. ZigZag Conversion (M)
  • 原文地址:https://www.cnblogs.com/zhouhongdan/p/8301265.html
Copyright © 2011-2022 走看看