正则表达式

精简正则表达式:字符集、数量词与实战应用

正则表达式(Regular Expression):专门描述字符串中字符出现规则的表达式。

用于:验证字符串格式;查找敏感字字符集。

 字符集:
    1、是规定一位字符上多种备选字的列表;
    2、只要规则中某一位字符上有多种备选字时,就用字符集;                                                       

  • 要匹配一位小写字母:[a-z] 共26个
  • 要匹配一位大写字母:[A-Z] 共26个
  • 要匹配一位字母:[A-Za-z] 共52个
  • 要匹配一位数字:[0-9]共10个
  • 要匹配一位数字或字母:[0-9A-Za-z]共62个
  • 要匹配一位汉字:[\u4e00-\u9fa5]
  • 例:利用字符集简写定义车牌号规则:
       第一位:1位汉字
       第二位:1位大写字母
       第三位:·
       后五位:每一位都是都是一位大写字母或数字
    答案:[\u4e00-\u9fa5][A-Z]·[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]


 预定义字符集: 
   
正则表达式语法位四种最常用的字符集定义了最简化写法,称为预定义字符集;
 包括:

  • 要匹配一位数字:\d 等效于[0-9]
  • 要匹配一位字母、数字或_:\w等效于[0-9A-Za-z_]
  • 要匹配一位空字符:\s可匹配空格、制表符Tab等空白
  • 要匹配所有文字(通配符):.

 数量词:
  1、是专门规定一个字符集出现次数的规则
  2、只要一个字符集在规则中可能连续反复出现多次,就要用数量词以简写的方式定义出现次数
  3、数量词紧跟在其修饰的字符集之后,默认修饰相邻的前一个字符集
  4、包括两大类:
  (1)有明确数量边界的数量词:
       字符集{n} 表示字符集必须重复多少次,不能多也不能少;
       字符集{n,m} 表示字符集至少重复n次,最多重复m次;
       字符集{n,} 表示字符集匹配的内容至少重复n次,多了不限
       例:\d{4,6}表示4到6位数字;
       例:\d{4,}表示4位及以上数字

 (2)没有明确数量边界的数量词:
      *  可有可无,多了不限;
      ?可有可无,最多一次;
      +  至少一次,多了不限;
 

例:定义车牌号进一步简写:[\u4e00-\u9fa5][A-Z]·[0-9A-Z]{5}


例:定义手机号规则:1[3-9]\d{9}

 选择和分组:
     
选择,
指在多个子规则中选其一匹配,只要希望在多个子规则中选其一匹配时,就用选择;
       如何:子规则1
| 子规则2;
       读作:满足规则1
规则2;
       
“|” 选择符只分左右,不考虑单个字符;
   分组,将多个子规则视为一组,再和分组外的规则匹配,只要希望将多个子规则视为一个整体,     再和其它规则匹配,就用分组。
      如何:其它规则
(多个子规则)

例:定义完整身份证规则:
    15位数字:\d{15};
     2位数字:\d\d;
     最后一位:1位数字或x:[0-9x];
     最后三位可有可无,最多一次:(\d\d[0-9x])?;
      答:\d{15}(\d\d[0-9x])?

 指定匹配位置:
   
如果只希望匹配特殊位置上的关键字时,就可以用特殊字符号表示特殊位置;
包括:
    ^ 表示字符串开头
    $ 表示字符串结尾
    \b 表示单词边界,可匹配:空格,标点符号,字符串开头和结尾等可将一个单词与其它单词分割开的符号

例:找到每个单词的首字母
     ——前面紧挨着单词边界的字母
    答:\b[A-Za-z]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值