正则表达式

正则表达式
1. window系统的通配符:   *  代表任意多个字符   ? 代表一个字符

2. 正则表达式是一种描述文本规则的代码

3. 正则表达式的应用范围:
   模式验证(文本匹配)
   文本搜索
   文本替换
   从文本中提取子字符串

4. 正则表达式对象的语法:
     语法: (Perl语言)
          var 变量名=/模式/[选项特性]
     语法:
          var 变量名=new RegExp("模式",["选项特性"]);

         模式:  要使用的正则表达式. 
         选项特性:
                 g   (查找字符串中所有的符合模式的字符串)
                 i   (忽略大小写)
                 m   (\n多行查找)

5. 正则表达式的用法:
   String对象来使用正则表达式:
        match(reg):      执行字符串匹配,返回所有的可以匹配上的子字符串数组
        search(reg):     返回第一个符合规则的子字符串
        replace(reg, 要替换的字符串):   替换
        split(reg):     分隔字符串,返回数组

   RegExp正则表达式对象直接使用
         reg.test(要匹配的字符串):    判断指定的正则表达式文本是否存在
         reg.exec(要匹配的字符串):   返回找到的第一个字符串


6. 简单模式:
   1. 元字符:  特殊字符: 
       ( { { \ ^ $ | ) ? * + .
      要查元字符,要加\
   2. 特殊字符: ASCII码  UNICoDE编码
       \t \n \r \f.....
       \0八进制  
       \u00654
   3. 字符类: 代表一系列的字符,可以与其所包含的任何字符相匹配.   将它放入到一[]
       (1)简单类: 直接将多个要匹配的字符放入[]
       (2)负向类: 不区配[^要匹配的字符]: 与简单类正好相反
       (3)范围类: -     a-z   1-9
            如果要查中文范围的话,请使用: [\u4e00-\u9fa5]
       (4)组合类: 将以上三种类组合合成的类. 类之间不能有空格,不能嵌套[]

       (5)预定义类: 封装常用的模式
             .     [^\n\r]        除了换行和回车外的任意字符
             \d     [0-9]
             \D    [^0-9]
             \s    [ \t\n\x0b\f\r]    空白字符
             \S    [^ \t\n\x0b\f\r]
             \w    [a-zA-z_0-9]
             \W    [^a-zA-z_0-9]

      小结: 字符类注意点:  字符类[]中的每个字符只能匹配一个字符,而不能匹配整个[]中的全部字符
            所以要匹配"第xxx章": /第[1-9][0-9]章/   /第[1-9]章/   /第[1-9][0-9][0-9]章/
            -> 解决方案:  量词机制
                
  4. 量词: 解决字符类不能匹配多个字符的情况.
          ?     零次或一次
          *      任意次
          +     一次或多次
          {n}   一定出现n次
          {n,m}  最少出现n次,最多出现m次
          {n,}   最少出现n次,最多不限

         例如:    /ba?d/  ->   bd  bad
                  /ba*d/  ->   bd  bad  baad   baaaaaaaaad
                  /ba+d/  ->   bad   baad    baaaaaad
                  /ba{0,1}d/  -> bd   bad
                  /b[ae]{1,2}d/ ->  bad baad bed beed baed bead
       第xxx章 ->  /第[1-9]\d*章/    1   10 11 1234

             /\d{6}/
             /[1-8a-z]{3,6}/
             /he[lk]{1,2}o/
             /0[1-4][01]/

  5. 分组: 将匹配符分组后,就可以将多个字符象一个字符那样重复操作  
            ()
         注意: 分组可以嵌套:
          例: /(bad)?/     /(bad){1,2}/     /(b[ae]d?)+/   /(bad( and bed)?)/ 

      需求: 图书编号:  要么5个数字(10100),  要么是5个数字加-再加4个数字
              /\d{5}(-\d{4})?/

  6. 选择:   |
            
  7. 反向引用:  当正则表达式计算完每个分组()后,将匹配的结果存到一个RegExp的属性$n中


  8, 非捕获性分组:
          语法: (?:分组条件): ?:表示分组条件运算的结果不保存

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值