问题

在外刊君读者群中看到有人提出这样的一个需求:

把字符串切成连续相同字符的正则怎么写?比如abbcccdddd切成a,bb,ccc,dddd

之前我对正则表达式也是略有研究,想尝试一下。其实我对正则表达式的学习基本完全来源于犀牛书的第10章,真正看懂这一章,我觉得操作正则表达式应该不在话下。

我的答案

先给出我的答案吧:

'abbccddd'.match(/(\w)\1*/g) // ["a", "bb", "cc", "ddd"]

说明

拿到这个问题,首先要匹配字符[a-zA-Z0-9],这里直接使用\w。然后是全局匹配,在最后加上g。难点在于怎么判断重复。

翻看了犀牛书后,又读了一遍分组和引用的部分。使用小括号()将字符作为一个最小单元,同时小括号还能记忆这个组合相匹配的字符串。再使用反斜杠\引用前面分组的表达式,数字1表示第一个小括号。这时完成了2个字符重复的要求。最后再使用*来匹配出现0次或n次。这个正则表达式就写完了。

下面详细说说分组和引用。

正则表达式的选择、分组和引用字符表

字符 含义 | 选择,匹配的是该符号左边的子表达式或右边的子表达式 (...) 组合,将几个项组合为一个单元,这个单元可通过* + "53">("607">只组合,把项组合到一个段元,但不记忆与该组相匹配的字符 \n 和第n个分组第一次匹配的字符相匹配,组是圆括号中的子表达式(也有可能是嵌套的),组索引是从左到右的左括号数,(?:形式的分组不编码

这篇文章就介绍到这了,希望大家以后多多支持。

风云阁资源网 Design By www.bgabc.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
风云阁资源网 Design By www.bgabc.com

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。