正则表达式学习方法及笔记

    最近参加了百度ife的前端培训,在完成task0002的过程中要求学会正则表达式,曾经在javascript的教学图书中有看过正则表达式,但都讲的不够系统,自己也不够重视,所以就几乎是正则表达式零基础。于是花了不到一个晚上的时间把《入门正则表达式》看完了,一百多页,比网上的大多数教程系统,入门足矣。

    首先推荐两个在线测试正则的网站,边学边测试反复实践当然学的更快了。

     http://regexpal.com/

     http://regexr.com/

    个人更喜欢用第二个,功能更加齐全,而且界面更美观一些。

     MDN正则表达式  这个这教程结合书使用效果更加。

 以下是我在Evernote上整理的读书笔记,由于是按自己学习的状态整理所以有些简单不系统,更加建议看书

     元字符(metacharacter)是在正则表达式中有特殊含义的字符,也是保留字符。[0-9]这种形式的正则表达式称作字符组(character class)。

     \d可以像[0-9]一样匹配任意阿拉伯数字这种正则表达式叫做字符组简写式(character shorthand),也叫转义字符(character escape)。

     使用\D匹配任何一个非数字字符,会匹配空格,字母和标点符号。

     .是一个通配符,可以匹配任意字符(但某些情况下不能匹配行起始符)。

     脱字符^匹配行起始位置

     美元$匹配行结束位置
     竖线符|表示选择,也就是从多个可选项中选择一个。
     \w只匹配字母,数字,下划线
     x(?=y)  匹配’x’仅仅当’x’后面跟着y 正向肯定查找
     x(?!y)  匹配’x’ 仅仅当’x’后面不跟着’y’,这个叫正向否定查找
 
使用量词
    {3}花括号中的数字表示带查找的数字出现的次数。包含数字的花括号是一种量词(quantifier)。花花括号本身用做元字符。
      ?也是一种量词表示连字符是可选的,连字符可以不出现或只出现一次。还有其他的量词,例如加号(+)表示“一个或多个”,星号(*)表示“零个或多个”。
      懒惰量词在普通量词后面加一个?可以使它匹配最少
      占有量词在普通量词后面加一个+
 
边界
      就像^和$一样,\b是一个零宽度断言,表面上它会匹配空格或者是行起始,而实际上它匹配的是不存在的东西。
      \B匹配非单词边界。
     
选择,分组和后向引用
      举例:先将一个\d放在一对圆括号中,这样就将它放入了一个分组中,后面可以用\1来对捕获的内容进行后向引用。
      (\d)\d\1可以匹配707等前后两个数相等的三位数。
      当一模式的全部或则部分内容由一对括号分组时,它就对内容进行捕获并临时存入内存中。可以通过后向引用重用捕获的内容,形式为:\1 或 $1。
      (?:x)    匹配’x’但是不记住匹配项。这种被叫做非捕获括号。匹配到的自字符串不能通过数组的[1],...,[n]进行访问。
posted @ 2015-04-26 00:02  licop  阅读(2696)  评论(0编辑  收藏  举报