正则表达式的总结

  第一次接触正则表达式还是听师兄说起过的,总感觉很难。在买书的时候看到《正则表达式必知必会》时果断买下来啦,还被嘲笑30分钟可以入门的事,一定要每天一章一章地看,发现确实不难。也许每天一章一章地看只是想证明我可以坚持一件事吧~

  下面是自己的一些总结,方便自己和他人查阅。

  正则表达式用来匹配和处理文本的字符串,它经常被简称为模式,其实就是一些由字符构成的字符串。这些字符可以是普通字符(纯文本)或元字符(有特殊含义的特殊字符)。正则表达式语言是内置于其他语言或软件产品里的“迷你”语言。主要用途是用于“搜索”和“替换”。

 正则表达式中的特殊字符

  .:可以匹配除换行符以外的任意单个字符

  \:用来对特殊字符进行转义

  []:用来定义一个字符集合,其含义是必须匹配该集合里的字符之一。有两种形式:1,把所有字符列举出来;2,利用原字符“-”以字符区间的方式给出;[0123456789]与[0-9]等价

  ^:只有当它出现在一个字符集合里(被放在[和]之间)并紧跟在左方括号[的后面时,它是“求非”的作用(如:非数字[^0-9])。如果是在一个字符集合的外面并处于一个模式的开头,它匹配字符串的开头

  \b:指定一个单词边界(\bcap\b匹配cap;\bcap匹配captain,cap,cape;cap\b匹配cap,recap)

  $:字符串的结尾

  [\b]:退格

  \f:换页

  \n:换行

  \r:回车

  \t:Tab键

  \v:垂直制表符

  \d:任何一个数字字符(等价于[0-9])

  \D:任何一个非数字字符(等价用于[^0-9])

  \w:任何一个字母(大小写都可),数字,下划线(等价于[a-zA-Z0-9_])

  \W:任何一个非字母数字或非下划线字符

  \s:任何一个空白字符

  \S:任何一个非空白字符

  +:匹配字符或字符集合的一次或多次重复出现

  *:匹配字符或字符集合的零次或多次重复出现

  ?:匹配字符或字符集合的零次或一次重复出现

  {}:设定匹配字符或字符集合重复出现次数的最小值和最大值

  ():子表达式

  |:或者

 回溯引用匹配

  回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式

  \1:代表模式里的第一个子表达式

  \2:代表模式里的第二个子表达式

  以此类推;

  回溯引用在替换中的应用

  文本:

    313-555-1234

    248-555-9999

    810-555-9000

  正则表达式:

    (\d{3})(-)(\d{3})(-)(\d{4})

  替换:

    ($1) $3-$5

  结果:

    (313) 555-1234

    (248) 555-9999

    (810) 555-9000

 前后查找

  1)、向前查找

  以(?=)开头的子表达式

  例子:

    文本:

      http://www.forta.com

      http://mail.forta.com

      ftp://ftp.forta.com

    正则表达式

      .+(?=:)

    结果:

      http://www.forta.com

      https://mail.forta.com

      ftp://ftp.forta.com

  2)、向后查找

  以(?<=)开头的子表达式

  例子:

    文本:

      ABC01: $23.45

      HGG42: $5.32

      Tatal items found:4

    正则表达式

      (?<=\$)[0-9.]+

    结果:

      ABC01: $23.45

      HGG42: $5.32

      Tatal items found:4

注意:java、.NET,PHP和Pert都支持向后查找,而javaScript不支持

常用例子

1、手机号码

1 // 验证10-11位数字
2 ^[0-9]{10,11}$

2、替换html字符串代码中的img标签的src地址

 1 function textHandle(publicUrl, text) {
 2     // publicUrl:替换后的图片地址
 3     // text 需要进行替换的文本
 4     // 替换img标签的src地址
 5     text.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, (match, capture) => {
 6       text = text.replace(new RegExp(capture, 'g'), `${publicUrl}`);// 这里也可以替换成需要的路径
 7     });
 8     return text;
 9 }
10  
11 let text = '<img src="1213232" alt="" >bnsciqcowqnnce <img src="wxw1314" alt="">bdciwenhcwe <img src="wxw12345678" alt="">'
12  
13 console.log(textHandle("myurl",text));
14 
15 // 输出: <img src="myurl" alt="" >bnsciqcowqnnce <img src="myurl" alt="">bdciwenhcwe <img src="myurl" alt="">

 

  

posted @ 2017-04-19 22:59  wxw婉  阅读(280)  评论(0编辑  收藏  举报