正则中的 1的作用

2017-12-28 01:40:22javascriptjs

思路来源:https://segmentfault.com/q/1010000012619787?_ea=3081492

怎么截取

'aaabbbbcddd' => ['aaa','bbbb','c','ddd']

网友给出了:'aaabbbbcdddd'.match(/(.)\1+/gi); 测试发现没有匹配到c,但是这已经给出了思路。
优化:'aaabbbbcdddd'.match(/(.)(\1+)?/gi); 可以匹配到c,结果也对了。
继续优化:'aaabbbbcdddd'.match(/(.)\1*/gi); 更简洁,也的确应该如此。

那么问题来了,这个\1是什么意思呢:

正则表达式中的小括号"()"是代表分组的意思。 如果再其后面出现\1则是代表与第一个小括号中要匹配的内容相同,
重要的一点:\1必须与小括号配合使用。

百度百科:\num => num是一个正整数。对所获取的匹配的引用。例如,“(.)\1”匹配两个连续的相同字符。