zoukankan      html  css  js  c++  java
  • 正则学习(转)

    这个代表不捕获分组
    比较(X)(?:X),前者是捕获分组,后者不捕获,区别在于正则表达式匹配输入字符串之后所获得的匹配的(数)组当中没有(?:X)匹配的部分;
    比如

    var m = "abcabc".match(/(?:a)(b)(c)/)
    //结果 ["abc", "b", "c"]
    // m[0] 是/(?:a)(b)(c)/匹配到的整个字符串,这里包括了a
    // m[1] 是捕获组1,即(b)匹配的子字符串substring or sub sequence
    // m[2] 是捕获组2,即(c)匹配到的

    如果这样

    var m = "abcabc".match(/(a)(b)(c)/)
    //结果 ["abc", "a", "b", "c"]

    第一小题应该是这样的正则表达式

    /(w)((?=111)(1))+/

    这里有一个知识点zero-width positive lookahead,零宽断言,正向前瞻(反正我记不住
    意思是(?=X)匹配某个位置,右边(正向)是X,它不真正匹配捕获子串。
    看几个匹配的测试例子

    /(w)((?=111)(1))+/.test("1111") // true
    /(w)((?=111)(1))+/.test("2222") // false

    匹配重复4次以上的字母或数字可以这么写

    /(w)(?=1{3,})/.test("AAAAAAAA") //true
    /(w)(?=1{3,})/.test("AAAB") //false
  • 相关阅读:
    模板类 & 虚函数
    Page Color (页面着色)
    修改静态库
    ElementUI 时间选择器
    自定义export
    vue组件
    ElementUI 表格
    ElementUI 分页
    数组方法分类
    Vue过滤数组副本
  • 原文地址:https://www.cnblogs.com/laorenzhenhaoa/p/8295203.html
Copyright © 2011-2022 走看看