zoukankan      html  css  js  c++  java
  • 正则表达式

    正则表达式(regular expression)

    JS的RegExp类表示正则表达式,进行强大的模式匹配和文本检索与替换。

    var pattern = new RegExp(''s$')  <==>  var pattern = /s$/

    字符串类:

      [...]  方括号内任意字符

      [^...]  不在括号内任意字符

      .  除换行符和其他Unicode行终止符之外任意字符

      w  任何ASCII字符组成的单词,等价[a-zA-Z0-9]

      W  任何不是ASCII字符组成的单词,等价[^a-zA-Z0-9]

      s  任何unicode空白符

      S  任何非unicode空白符的字符

      d  任何ASCII数字,等价[0-9]

      D  任何非ASCII数字,等价[^0-9]

      []   退格直接量(特例),用来匹配单词边界,即w和W之间的边界,或开始和结尾

    贪婪匹配:

      js默认贪婪匹配

      {n,m}  匹配至少n次,至多m次

      {n,}  至少n次

      {n}  n次

      ?  0次或者1次,等价{0,1}

      +  1次或者多次,等价{1,}

      *  0次或者多次,等价{0,}

      /w{3}d?/  精确匹配3个字母或数字,最后跟0个或1个数字

      *和?允许什么都不匹配

    非贪婪匹配:

      在匹配的字符后跟随一个?  {1,5}?

    正则表达式总是会找字符串中第一个可能匹配位置,不考虑子串

    选择符:|

      匹配顺序自左到右,知道发现可能的匹配项,发现后忽略后面面的匹配

    圆括号作用:

      1.把单独的项组合成子表达式,方便使用|,*,+等

      2.从匹配的串中抽出与圆括号的子模式相匹配的部分。  (/[a-Z]+(d+)/),从结果中抽出数字

      3.允许同一个正则式中,后面部分引用前面的子表达式,通过在“”后加数字引用。 1引用第一个括号

        /["'][^'"]*['"]/  可能导致左右引号不搭配

        /(["'])[^'"]*1/  解决引号不搭配问题

      4.(?:.....)只进行分组,但不能被引用,引用时被忽略

    指定位置匹配:

      ^  匹配字符串的开头

      $  结尾

        边界

      B  非单词边界

      (?=p)  零宽正向先行断言,要求接下来的字符都与p匹配,但不能包括匹配p的那些字符

      (?!p)  零宽负向先行断言,接下来的字符都不与p匹配

      匹配单词本身:  /java/

    修饰符

      /.../i  不区分大小写

      /.../g  全局匹配

      /.../m  多行匹配

      可混搭

    用于模式匹配的String方法:

      search():参数是一个正则表达式,返回第一个与之匹配的子串的起始位置,若无则返回-1。若参数不是正则表达式,则首先通过regexp构造函数将其转为正则式

      replace():第一个参数为正则式,第二个为替换的字符串,有/.../g则替换所有,没有就替换第一个。若第一个参数不是正则式,则replace()将直接搜索这个串而不进行regexp()转换

      match():参数是正则式,返回由匹配结果组成的数组,有g则数组包含所有匹配结果

      split():参数是分隔符,将字符串拆分成子串组成的数组

    RegExp对象

      构造函数有两个参数,第一个为正则式,第二个可选,为修饰符。注意正则式的需要多一个进行转义

      var a = new RegExp("\d{5}","g");

    RegExp两个方法:

      exec():执行模式匹配方法,与String的方法match()类似,但其参数为字符串,无匹配则返回null,否则返回数组。有g需要反复调用exec()获得结果

      test():参数为字符串,查看是否包含匹配,返回true或者false

      regexp的lastIndex要么找出所有匹配自动置0,否则手动置0,不然影响下一次。

  • 相关阅读:
    常用品牌交换机镜像抓包配置
    BGP知识点备忘录
    IS-IS路由协议地址详解
    Linux msmtp+mutt发邮件
    Linux添加一临时用户拥有root权限最快方式
    ELK5.0全程普通用户源码安装指南(CentOS6.5)
    改变文件的拥有者和改变文件的拥有组
    Linux chmod命令详解
    Linux目录介绍
    php时间戳转化成时间相差8小时问题
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/6479806.html
Copyright © 2011-2022 走看看