zoukankan      html  css  js  c++  java
  • javascript正则表达式多行匹配和RegExp理解

    一:多行匹配

    很多时候我们可以通过边界符号(^,$,,B)达到我们匹配某些字符串的目的。但是如果字符串有多行呢,这个其实很简单了,只需加个m就指定为多行匹配了。实例:

     

    var str = "first second third fourth fifth sixth";

    var patt = /(w+)$/gm

    console.log(str.match(patt));

    结果:

     

    ["second", "fourth", "sixth"]
    如果没有指定m,则只会得到sixth了,加了m后实际上正则表达式是把 、 这些也换行和回车当成边界了,可以这么理解

     

     

    var str2 = "first second third fourth fifth sixth";

    var patt2 = /^(w+)/gm

    console.log(str2.match(patt2 ));

     

    结果:

     

    ["first", "third", "fifth"]
    没指定m则只能是first了
     
    二:RegExp理解
    RegExp有很多属性:
    1.  

       
      global 表示全局g是否设置

       

    2. ignoreCase 表示i忽略大小是否设置
    3. lastIndex 表示下次匹配将会从哪个位置开始(只有用了test,exec,match这些方法后才会有值,否则为0)
    4. multiline 表示多行m是否设置
    5. source 表示正则表达式的源字符串形式
    这些属性基本都不用,因为一看就知道了。可能有点用的是lastIndex这个属性了。我们可以控制这个去匹配我们想要匹配的字符串。
    还有一些静态属性:
    1.     
      长名 短名 描述
      input $_ 最后匹配的字符串
      lastMatch $& 最后匹配的字符
      lastParem $+ 最后匹配的分组
      leftContent $` 上次匹配的前面的子串
      rightContent $' 上次匹配的后面的子串

     

     

    实例:

     

    var str = "this has been a short,short summer";

    var patt = /(s)hort/g

    console.log(str.match(patt));

    console.log(RegExp.input);

    console.log(RegExp.lastMatch);

    console.log(RegExp.lastParen);

    console.log(RegExp.leftContext);

    console.log(RegExp.rightContext);

    当然也可以使用那些短名的

    结果:

     

    ["short", "short"]
    this has been a short,short summer
    short
    s
    this has been a short,
    summer
     
  • 相关阅读:
    Android中的自定义Adapter(继承自BaseAdapter)——与系统Adapter的调用方法一致——含ViewHolder显示效率的优化(转)
    Fragment(四)Fragment生命周期分析(转)
    android 修改listview item view 的方法(转)
    安卓中常用权限
    Java对数函数及Java对数运算
    Java中的字符串分割 .
    FragmentActivity与Fragment两者交互方法简介(转)
    windows下搭建vue开发环境+IIS部署
    Asp.net core WebApi 使用Swagger生成帮助页
    netCore2.0 Api 跨域(Cors)
  • 原文地址:https://www.cnblogs.com/yanni/p/3294946.html
Copyright © 2011-2022 走看看