捕获组(capturing group)是正则表达式里比较常用,也是比较重要的概念,我个人觉得掌握这部分的知识是非常重要的。
这篇文章内容不会很深入,但是尽量做到简单易懂又全面。接下来的内容主要是围绕以下7个点:
1: () 捕获组
2: ("color: #ff0000">1: () 捕获组
/go+/
以上的正则表达式表示一个字母g后面跟上一个或者多个字母o,他能匹配go或者goooo。但是如果我们想+不只是运用到字母o上,而是运用到go这个整体上怎么办呢?办法就是给go加括号:
/(go)+/
为了全局匹配以及不考虑大小写,我们接下来会给我们的正则加上ig,这两个flag:
let reg = /(go)+/ig; 'go is g gogo'.match(reg); //["go", "gogo"]
在上面的例子里面(go)就形成了一个捕获组(capturing group)。接下来看一个使用捕获组的例子来加深对它的理解:
let reg = /(\d{2}).(\d{2}).(\d{4})/; let originString = '10.25.2017'; reg.test(originString); //true RegExp.$1; //10 RegExp.$2; //25 RegExp.$2; //2017
在上面这个例子里,我们有三组括号,形成了三个捕获组,正则表达式(在javaScript里就是我们的RegExp)会缓存捕获组所匹配的串,以$n表示,n就代表这第几个捕获组。
假如现在我们有一个需求:把显示格式为 10.25.2017 的时间改为 2017-10-25 格式。
我们知道String的replace()方法经常和正则表达式一起使用。在replace()方法里,我们可以直接使用捕获组的结果:
let reg = /(\d{2}).(\d{2}).(\d{4})/; let originString = '10.25.2017'; let newString = originString.replace(reg, '$3-$1-$2'); console.log(newString);//"2017-10-25"
2: ("htmlcode">
从上面的例子可以看出,我们的正则表达式依然是匹配的(test()的结果依然为true),但是RegExp.$1不是数字10,而是25,因为我们在第一个括号里加了"color: #ff0000">3: ("htmlcode">
上面的例子里面reg1就只需要匹配数字,对于数字后面跟什么并没有要求,所以它能匹配到1,10。但是reg使用了前瞻型匹配,就只能匹配到10。 /x("color: #ff0000">4: ("htmlcode">
这里的要求是前面有$的数字,所以这里匹配到了数字2,而没有1. 6: ("htmlcode">
这样就匹配到了数字2和它后面的?。 下面再来看看后顾型: 需要特别注意到的一点是,对于后顾型,虽然条件在匹配项的前面,但是匹配出来的结果顺序依然是条件在匹配项的后面。所以这里match()出来的结果是2在$的前面。 总结 以上所述是小编给大家介绍的正则表达式 捕获组,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
let reg = /("10.25.2017", "25", "2017", index: 0, input: "10.25.2017", groups: undefined]
let reg = /\d+("10"]
str.match(reg1); //["1", "10"]
或许你已经能从上面的对比里了解到什么是正向前瞻型捕获了,意思是:
let reg = /\d+("color: #ff0000">5: ("htmlcode">
let str = "1 turkey costs $2";
console.log( str.match(/("2"]
let str = "1 turkey costs $2";
console.log( str.match(/("color: #ff0000">7: ("htmlcode">
let str = "1 turkey costs 2?";
let reg = /\d+("2", "?", index: 15, input: "1 turkey costs 2?", groups: undefined]
let str = "1 turkey costs $2";
let reg = /("2", "$", index: 16, input: "1 turkey costs $2", groups: undefined]
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]