正则表达式 学习笔记

 

题记:正则表达式多用于字符串的匹配和表单的验证。

一 语法    /正则表达式/标志

  1.匹配自身     /a/   --->匹配字符串   "a"

                    /123/ --->匹配数字    123


  2.特殊字符如果出现在字符串中需用 \ 转(如 /this\?/ --> "this?"),这些字符都有其自身的含义和用法:

    !   =      $       ^             *            +                ?             |        .          \        /         ( )       [ ]      { }

   定位符   结束  开始/非   0次或多次   至少1次   0次或1次     选择   字符类   转义   语法标签   分组    字符类   重复类


 

  3.字符类      /[abc]/    --->匹配  "a" "b" "c" 或以其开头的 字符中的一个

                   /[a-h]/    --->匹配 从 a-h的所有字符    

                  /[0-9]/     --->匹配 从 0-9的所有数字

                 /[a-zA-Z]/  -->匹配 从a-z和A-Z的所有字符

                /[^ace]/     --->除 a c e 外的所有字符  

                    //        --->匹配除换行符和其他 unicode行终止符之外的所有字符

                   /\w/       --->所有 ASCII 单字符 ,相当于 [a-z0-9A-Z_]

                  /\W/       --->相当于[^a-z0-9A-Z_]

                   /\s/       --->所有 Unicode 空白符

                  /\S/       --->除                        之外的所有字符

                   /\d/       --->所有 数字 ,相当于 [0-9]

                  /\D/       --->相当于[^0-9]

备注:每个字符和字符类只能匹配单个字符,如果要匹配多个字符,可以多次使用字符类或者用 重复类

         /第[1-9][0-9]章/   ---> 匹配第1-99章         (使用了2个字符类)


 

    4.重复类       {n}    ---》匹配前一项n次

                      {n,}   ---》匹配前一项至少n次

                     {n,m}  ---》匹配前一项至少n次,至多m次

                      ? ---》匹配前一项至少0或1次                     

                      + ---》匹配前一项至少1次                           

                      * ---》匹配前一项0或多次       

         /第[1-9]\d*章/    ---》匹配了所有的章节     


 

   5.选择符     |

         /index | default/    ----> 匹配 “index”  或 “default”


   6.定位符    ^      --->以 .. 开始的字符  多行中匹配一行的开头

                  $      ---> 以 .. 结束的字符  多行中匹配一行的结尾

                  \b     --->匹配一个词的边界,也就是单词与空格之间的位置(英文中用的较多)

                  \B

                  (?=p)  --->正前向申明

                  (?!p)  --->反前向申明            


   7.分组   (...)

              (?:...)    --->不记忆与该组合所匹配的内容 (不能用于引用),其他与 (...) 一致

              /boy(friend){0,1}/   ---->  匹配 "boy"  "boyfriend" 

              /boyfriend{0,1}/       ---> 匹配 "boyfrien"  "boyfriend"

    备注:分组不仅可以定义重复类匹配的对象,还能用于 引用  


   8.引用    \1

              /(['""][^'""]*\1)/     ---->匹配所有 用单引号和双引号 包裹的字符串


  9.标志   i              --》匹配时不区分大小写

             g             --》全局匹配

             m            --》多行匹配


 二 对象及方法   var a=new RegExp(正则表达式,标志)

                      var a=/正则表达式/标志

     1.方法      exec()               使用该方法会匹配子字符串  ,通过RegExp.$1  的形式可以对字符串进行引用

                                           该方法使用后会记录 lastIndex ,如果要对另一个字符串再使用该方法要重置 lastIndex=0

                   test()                 匹配成功返回 true  否则返回false。 与DOM结合使用可完成更多的功能

                   toSource()

                   toString()

    2.属性      global                 检测是否有  g 标签

                  ignoreCase

                  lastIndex            上次匹配后的字符位置

                  multiline

                  source  

    3.RegExo对象的静态属性      input

                                           lastMatch

                                           lastParen

                                           leftContext     最后一次匹配成功的子字符串左侧的子字符串

                                           rightContext

                                           multiline


三 实用的 RegExp

     1. 验证邮政编码                  /^\d{6}$/
     2. 验证身份证                    /^\d{17}[\d|x]$|^\d{15}$/i
     3. 验证电话号码(传真)     /^(\d{3,4}-|\(\d{3,4}\))?\d{7,8}$/
     4. 验证URL合法性            /^http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-\.\/\?%&\=]*)?$/
     5. 验证Email合法性         /^[\w-_\.]+@([\w-]+\.)+[\w-]+$/
posted @ 2011-11-09 12:02  Loop.D  阅读(215)  评论(0)    收藏  举报