月关宝盒
先回答问题题目的(?:)意思这个代表不捕获分组比较(X)和(?:X),前者是捕获分组,后者不捕获,区别在于正则表达式匹配输入字符串之后所获得的匹配的(数)组当中没有(?:X)匹配的部分;比如varm="abcabc".match(/(?:a)(b)(c)/)//结果["abc","b","c"]//m[0]是/(?:a)(b)(c)/匹配到的整个字符串,这里包括了a//m[1]是捕获组1,即(b)匹配的子字符串substringorsubsequence//m[2]是捕获组2,即(c)匹配到的如果这样varm="abcabc".match(/(a)(b)(c)/)//结果["abc","a","b","c"]第一小题应该是这样的正则表达式/(\w)((?=111)(1))+/这里有一个知识点zero-widthpositivelookahead,零宽断言,正向前瞻(反正我记不住意思是(?=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