1. 什么是正则表达式
    1. ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
    2. 这就是一个正则?看不懂
    3. 使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
    4. 搜索模式可用于文本搜索和文本替换。
  2. 和这则相似的事物
    1. 乱/看不懂/神秘
    2. 女人的心
    3. 道士的符
    4. 医生的字
    5. 正则表达式
  3. 学习正则可以做什么
    1. 操作字符串是正则唯一的作用
    2. 验证用户名长度
    3. 验证电话号
    4. 验证密码是否符合标准
    5. QQ聊天表情
    6. UBB编辑器
    7. 新闻采集器/小偷程序
  4. 学习流程
    1. 基本语法
      1. 如何去定义一个正则表达式
    2. 正则表达式的应用
      1. RegExp对象和String对象中的部分方法
  5. 定义正则表达式
    1. RegExp直接量方式
      1. /html5/
    2. RegExp对象方式
      1. new RegExp("html5")
    3. RegExp() 函数
      1. RegExp("html5")
  6. 基本语法
    1. 原子
      1. 与物理化学里面一样,是最小组成单位
      2. 正则也是一样,是最小单位
    2. 字符直接量
      1. 正常的字母都是原子
        1. 所有的可见字符都是原子
        2. 大部分不可见字符也是原子,空格,转移字符等
      2. \0 查找 NUL 字符。
      3. \n 查找换行符。
      4. \f 查找换页符。
      5. \r 查找回车符。
      6. \t 查找制表符。
      7. \v 查找垂直制表符。
      8. \xdd 查找以十六进制数 dd 规定的拉丁字符。 \x01 等价于 \n
      9. \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。 [\u2E80-\u9FFF]
    3. 字符类
      1. [...]
        1. 原子列表 [内的任意字符]
          1. [abcde] 可选列表,只能是原子列表中的一个字符
          2. [5-9] 连续的字符 5,6,7,8,9
      2. [^...]
        1. 原子列表 []不在方括号的任意字符
          1. [^abc] 排除列表,除了a,b,c都可以
      3. .
        1. 匹配所有,除了 \n
      4. \d
        1. 匹配所有数字
      5. \D
        1. 匹配非数字
      6. \s
        1. 表示所有空白字符包括,\r \n \t等
      7. \S
        1. 表示所有可见字符
      8. \w
        1. 数字字母下划线
      9. \W
        1. 除了数字字母下划线
      10. [\b]
        1. 退格直接量(特例)
    4. 重复(原子数量修饰符)
      1. +
        1. 表示一个或多个
      2. ?
        1. 表示0个或一个
      3. *
        1. 表示从0到n
      4. {}
        1. {m,n} 表示m到n个
        2. {m,} 表示m个以上
        3. {m} 表示m个
      5. 非贪婪的重复
        1. 后面加 ?
    5. 选择\分组\引用
      1. 选择修饰符
        1. |
          1. 逻辑或
          2. /a|b/ 匹配a或者b
          3. /abc|def/ 匹配abc 或者def 字符串的结合优先级高于选择
          4. /ab(c|d)ef/ 匹配abcef 或者abdef
      2. 模式单元
        1. ()
          1. 改变优先级
          2. 将多个原子视为一个原子
          3. 将匹配的内容暂存在内存
          4. 可以将括号的内容在函数的辅助下反向引用
          5. /(?:abc)/ 用问号冒号,可以取消暂存内存的特性
    6. 指定匹配位置
      1. 词边界修饰符
        1. 什么是词边界
          1. 可以分割单词的都是,非字母数字下划线
        2. \b
          1. 词边界
        3. \B
          1. 非词边界
        4. 注意:词边界只对英文有效
      2. 字符串边界
        1. ^
          1. 以指定字符开头的
        2. $
          1. 以指定字符结尾的
        3. ^字符串$
          1. 精确匹配字符串
      3. 先行断言(正向预查)
        1. (?=p)
      4. 负向先行短信(负向预查)
        1. (?!p)
    7. 修饰符(模式修正符)
      1. i 执行对大小写不敏感的匹配。
      2. g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
      3. m 执行多行匹配。
  7. 用于模式匹配的String对象方法
    1. search() 检索与正则表达式相匹配的值。
    2. match() 找到一个或多个正则表达式的匹配。
    3. replace() 替换与正则表达式匹配的子串。
    4. split() 把字符串分割为字符串数组。
  8. RegExp内置对象
    1. 属性
      1. source 正则表达式的源文本。
      2. global RegExp 对象是否具有标志 g。
      3. ignoreCase RegExp 对象是否具有标志 i。
      4. lastIndex 一个整数,标示开始下一次匹配的字符位置。
      5. multiline RegExp 对象是否具有标志 m。
    2. 方法
      1. compile 编译正则表达式。
      2. exec() 检索字符串中指定的值。返回找到的值,并确定其位置。
      3. test() 检索字符串中指定的值。返回 true 或 false。