zoukankan      html  css  js  c++  java
  • JavaScript:正则表达式 问号

    问号

    1.?表示重复前面内容的0次或一次(但尽可能多重复)

    var reg=/abc?/g;
    var str="abcdabcaba";
    console.log(str.match(reg));  //abc,abc,ab

    2.??表示重复前面内容的0次或一次(但尽可能少重复)

    var reg=/abc??/g;
    var str="abcdabcaba";
    console.log(str.match(reg));  //ab,ab,ab

    3.惰性量词 

    正则中的量词都为贪婪量词,但在后面加上?就成了惰性量词。

    var reg=/aw+/g;
    var str="abcdabcaba";
    console.log(str.match(reg));  //abcdabcaba
    var reg=/aw+?/g;
    var str="abcdabcaba";
    console.log(str.match(reg));  //ab ab ab

    4.前瞻(?=,?!)

      上一页

    5.不捕捉模式(?:)

     var reg=/(?:abc)(de)(fg)/g;
     var str="abcd abcde abcdefg abcabc";
     console.dir(reg.exec(str));

     分组中的 非捕获性分组 

     注意:

     ?=    ?!是零宽断言,正则表达式引擎会留意字符串后面的部分,然而却不移动index 

     ?:正则表达式是会移动index的。

       var str="abcdedd";
       var re=/(?:d)/g;
       show(5);
       console.dir(str.match(re));
       function show(num){
          for(var i=0;i<num;i++){
            console.dir(re.exec(str));console.log("");
          }
       }

     var str="abcdedd";
       var re=/(?=d)/g;
       show(5);
       console.dir(str.match(re));

    var str="abcdedd";
       var re=/(?!d)/g;
       show(5);
       console.dir(str.match(re));

    发现前瞻查找的只是位置,不是内容。

     var str="abcdedd";
       var re=/(?=d)de/g;
       show(3);
       console.dir(str.match(re));

  • 相关阅读:
    Java实现 LeetCode 130 被围绕的区域
    Java实现 LeetCode 130 被围绕的区域
    Java实现 LeetCode 130 被围绕的区域
    win32创建控件的一些问题
    win32 sdk绘制ListBox控件
    VC++ WIN32 sdk实现按钮自绘详解 之二.
    win32 sdk 列表视图控件绘制
    win32 sdk树形控件的项拖拽实现
    MFC 用gdi绘制填充多边形区域
    vc 按钮自绘
  • 原文地址:https://www.cnblogs.com/hongdada/p/3373983.html
Copyright © 2011-2022 走看看