ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

?: 正则匹配

2021-11-27 10:03:32  阅读:159  来源: 互联网

标签:匹配 正则表达式 捕获 正则 111 test foo


例子:
1.(w)((?=111)(1))+ 为什么=重复4次以上的字母数字,则匹配其剩下最后2位之前的部分
2."abcabc".match(/(?:a)(b).*1/g); 结果为 ["abcab"]

正则表达式

回复

阅读 29.4k

2 个回答

正在上传…重新上传取消​Honwhy

  • 7k

发布于 2017-07-27 ✓ 已被采纳

先回答问题题目的(?:)意思
这个代表不捕获分组
比较(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

回复

正在上传…重新上传取消​笑场

  • 64

发布于 2017-07-22 

"?=n" 匹配任何其后紧接指定字符串 n 的字符串

(?:x) 匹配 'x' 但是不记住匹配项。这种叫作非捕获括号,使得你能够定义为与正则表达式运算符一起使用的子表达式。来看示例表达式 /(?:foo){1,2}/。如果表达式是 /foo{1,2}/,{1,2}将只对 ‘foo’ 的最后一个字符 ’o‘ 生效。如果使用非捕获括号,则{1,2}会匹配整个 ‘foo’ 单词

更多正则表达式

标签:匹配,正则表达式,捕获,正则,111,test,foo
来源: https://blog.csdn.net/qq_23183809/article/details/121572789

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有