regex - 正则表达式查找#aabbcc 格式的十六进制颜色以将它们缩短为#abc
问题描述
我需要匹配#aabbcc 格式的十六进制颜色才能将它们缩短为#abc。这里有些例子:
#333333
- 匹配#666666
- 匹配#ff6666
- 匹配#ffaacc
- 匹配#d7d7d7
- 不匹配#e5e5e5
- 不匹配
我以前用过这个/#([0-9A-Fa-f])(?:\1){5}/g
匹配前两个,但我也需要第三个匹配。我卡住了,请帮忙:)
解决方案
看来你想要
/#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3/gi
并替换为#$1$2$3
. 请参阅正则表达式演示。
细节
#
- 一个#
字符([0-9a-f])
- 第 1 组:一个十六进制字符\1
- 对第 1 组值的反向引用([0-9a-f])\2
- 第 2 组匹配十六进制字符和对第 2 组值的反向引用([0-9a-f])\3
- 第 3 组匹配十六进制字符和对第 3 组值的反向引用
演示:
var strs = ['#333333','#666666','#ff6666','#d7d7d7','#e5e5e5'];
var rx = /#([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3/gi;
for (var s of strs) {
console.log(s, "=>", s.replace(rx, '#$1$2$3'));
}
推荐阅读
- google-apps-script - Google Apps 脚本 indexOf
- php - 显示网站中的 Apacheserver 配置错误?
- python-3.x - 用于遗传算法的 TensorFlow (2.x) 模型
- java - NodeUtil 解包方法
- excel - VBA - 识别格式并将其用作条件
- c++ - 当函数只有一个迭代器时处理异常和清理的正确方法
- windows - 在 Windows 服务器上无法访问 Tomcat 端口 8080
- php - Unirest 请求返回带有有效 URL 的 404 错误
- selenium - 自动识别 Selenium 测试的真假失败
- hibernate - JPA/Hibernate 事务问题