RegExp 正则表达式

79 阅读3分钟

RegExp 正则表达式(是复杂数据类型)

    1.语法:1-1.以字面量创建
    1-2.内置构造函数创建

    !2.正则表达式俩方法
    *2-1.匹配 语法:正则:test(要检测的字符串)
             返回值:一个布尔值
    *2-2 捕获:语法:正则:exec(要捕获的字符串)
    从字符串里面获取符合规则的那一部分         
             返回值:无符合:null / 符合[0]是捕获出来的片段(不管捕获多少次都是捕获第一个片段)

    !3.元字符:组成正则的基本符号,以符号的形式代替文本内容

    *1.\s 一个空格 
    *  \S 非空格
    *2.\t 制表符
    *3.\d 表示字符串必须有一个数字 
    *4.\D 表示字符串需要有一个非数字字符
    *5.\w 表示字符串字母下划线必须有一个
    *6.\W 非数字字母下划线
    *7.\n 字符串里有一个非换行内容\n
    *8.\  转换符  有意义<==>无意义


    !4.边界字符串
    1.^ 表示字符串开始
    1.$ 表示字符串结尾

    !5.限定元字符 : 修饰前面 *一个符号* 的出现次数
    5-1. * 表示 0 ~ 多次(从0开始)
    5-2. + 表示 1 ~ 多次(从1开始)
    5-3. ? 表示 0 ~ 1次
    5-4. {n} 表示 n次  {0,}等价于* {1,}等价于+
    5-5. {n,}表示 n ~ 多次 (从n开始) {0,1}等价于?
    5-6. {n,m}表示 n ~ m次
    5-6

    !6.正则贪婪和非贪婪:
     +正则在捕获时尽可能多的去捕获内容
     非贪婪:写限定符的时候在后面加?
     例子:+?正则在捕获时尽可能少的去捕获内容
          *?正则在捕获时尽可能少的去捕获内容
          

正则表达式的元字符 - 特殊符号

   *1.()
   * 1-1一个整体
   * 1-2单独捕获:在捕获一个字符串时 从左边开始每个小括号依次是数组里面的[1]开始的内容
   * 从左到右依次数小括号的开始括号
   *2.(?:)整体匹配 不单独捕获
   *3. | 占位或 左边或右边都行
   *4.[] 表示里面任意一个都行,一个[]占一个字符串位置 
   *5.[^]表示非里面任意一个都行,一个[^]占一个字符串位置 
   *6.- 一位字符 表示0 ~ 9
   *7. 组合形式
   *  7-1 [0-9a-zA-Z] 等价于\w
   *  7-2 [^0-9a-zA-Z_] 等价于\W
   *  7-3 [0-9] 等价于 \d
   *  7-4 [^0-9] 等价于\D 
   *  7-5 [ ]等价于 \s
   *  7-6 [^ ]等价于\S
   *8. 当 ( . ) 出现在 []或者出现在 [^]表示一个点文本
   

字符串和正则合作的方法

    *1.search()  查找
    *语法:1-1.字符串search(字符串片段)
    *      1-2.字符串search(正则表达式)
    *返回值:有返回索引,没有返回 -1
    
    *2.replace() 替换
    *语法:1.字符串.replace(字符串片段,要替换的内容)
    *      2.字符串.replace(正则表达式,字符串片段)
    *返回值:1.只能替换第一个查找到的内容,返回替换好的字符串
    *        2.没有全局标识符 g 的时候只能替换第一个找到的内容,返回替换好的字符串
    *        有则将满足条件的全部替换,返回替换好的字符串
    
    *3.match()
    *语法:1.字符串.match(字符串片段)
    *      2.字符串.match(正则表达式)
    *返回值:1.查找到字符串内一个满足字符串片段的内容返回,返回格式和exec一样(无符合:null / 符合[0])
    *       2.正则表达式没有全局标识符 g 的时候,返回格式和exec一样
    *       3.正则表达式有全局标识符 g 的时候,返回一个数组,里面是所有满足条件的内容

    *4.正则匹配中午
    *   4-1 \u 表示查找中午
    *   4-2 后面带上中文四位 Unicode 编码
    *   4-3 任意一个中文字符 [\u4e00-\u9fa5]