美文网首页
第10章 正则表达式的模式匹配

第10章 正则表达式的模式匹配

作者: hhhhhanako | 来源:发表于2018-08-29 20:26 被阅读0次

    10.1 正则表达式的定义

    • 正则表达式直接量为包含在一对斜杠(/)之间的字符。
    • ES3规定,同一段代码所表示的正则表达式直接量会返回同一个RegExp对象。
    • ES5规定,同一段代码所表示的正则表达式直接量每次都会返回一个新对象。

    10.1.1 直接量字符

    • 反斜杠(\)用以转义

    10.1.2 字符类

    [...]  方括号内的任意字符                        [^...]  除了方括号内的任意字符
    .      除了换行符和行终止符以外的任意字符
    \w   等价于[a-zA-Z0-9]                           \W  等价于[^a-zA-Z0-9]
    \s    任意空白符
    \d   等价于[0-9]
    

    10.1.3 重复

    {n,m}  匹配前一项至少n次,不超过m次
    {n,}     匹配前一项n次或以上
    {n}      匹配前一项n次
    ?      等价于{0,1}
    +       等价于{1,}
    *        等价于{0,}
    

    使用*和?必须谨慎,因为它们允许什么都不匹配。

    非贪婪的匹配
    • 在待匹配的字符串后加一个问号(?)可以尽可能少地匹配。
    • 正则表达式的模式匹配总是会寻找字符串中第一个可能匹配的位置。

    10.1.4 选择、分组和引用

    • 选择:“|”
    • "()"的多种作用
      • 组合 /(ab+cd)+|ef/
      • 定义子模式 /[a-z]+(\d+)/
      • 在同一正则表达式的后部引用前面的子表达式(是与被引用子表达式相匹配的文本的引用)。 "\"加上数字来指定子表达式(数字是参与计数的左括号的位置)
    • "(?: ...)"只用于组合,不记忆与改组匹配的字符。

    10.1.5 指定匹配位置

    ^  匹配开头
    $   匹配结尾
    \b  匹配单词的边界
    \B  匹配非单词边界的地方
    (?=p)  接下来的字符串与p匹配
    (?!=p) 接下来的字符串不与p匹配
    

    10.1.6 修饰符

    修饰符放“//”后面。

    i  不区分大小写
    g 全局匹配,找到所有的匹配
    m 多行匹配(^匹配字符串的开头和行开头,$匹配字符串的结尾和行结尾)
    

    10.2 用于模式匹配的String方法

    String拥有的和正则表达式匹配相关的方法
    • search() 返回第一个与之匹配的子串的起始位置,没有则返回-1
    • replace() 检索替换
      • 单纯的字符串替换(可单个可全局)
      • 替换字符串中含有$加数字,用指定的子表达式匹配的文本替换
      • 第二个参数可以是函数
    • match() 返回字符串的匹配结果
      • 全局:返回包含所有匹配结果的数组
      • 单个:返回数组的第一个元素是第一个匹配结果,其他元素是子表达式
      解析URL的正则表达式:/(\w+):\/\/([\w.]+)\/(\S*)/
      
    • split() 拆分字符串

    10.3 RegExp对象

    10.3.1 RegExp的属性

    • source 包含正则表达式的文本(String)
    • global 说明是否全局匹配(Boolean)
    • ignoreCase 说明是否不区分大小写(Boolean)
    • multiline 说明是否多行匹配(Boolean)
    • lastIndex 下一次搜索的开始位置(被exec函数和test函数利用)

    10.3.2 RegExp的方法

    • exec()
      • 效果和返回结果类似String.match() ,但只返回一个匹配结果,因而可重复调用
      • 返回结果的属性包括index(发生匹配的位置)和input(正在检索的字符串)
    • test()
      • 同exec()可重复调用

    相关文章

      网友评论

          本文标题:第10章 正则表达式的模式匹配

          本文链接:https://www.haomeiwen.com/subject/guzkwftx.html