【发布时间】:2014-07-06 00:22:24
【问题描述】:
我想使用正则表达式将构成十六进制颜色的三个十六进制集合中的每一个的第一个 F 替换为 E。
FFFFFF 会变成 EFEFEF
FEFEFE 会变成 EEEEEE
【问题讨论】:
标签: javascript regex colors hex
我想使用正则表达式将构成十六进制颜色的三个十六进制集合中的每一个的第一个 F 替换为 E。
FFFFFF 会变成 EFEFEF
FEFEFE 会变成 EEEEEE
【问题讨论】:
标签: javascript regex colors hex
我猜想执行此操作的函数将由诸如 onClick 之类的事件或其他事件触发。 为什么不简单地做一个这样的功能(伪代码)?
if (colour == FFFFFF)
colour = EFEFEF;
else if (colour == FEFEFE)
colour = EEEEEE;
【讨论】:
你可以用这个:
str = str.replace(/F(?=[A-F0-9](?:[A-F0-9]{2}){0,2}$)/g, 'E');
图案细节:
F
(?= # lookahead assertion: means "followed by"
# the trick is to use the relative position to the end of the string
[A-F0-9] # an hexadecimal character
(?:[A-F0-9]{2}){0,2} # an even number of hexadecimal characters
$ # until the end
) # close the lookahead assertion.
请注意,前瞻中的所有内容仅被检查,而不是匹配结果的一部分。这就是替换字符串只有E的原因。
【讨论】:
dadsaF0F0F0F0F0F0F0F0F0F0asddsa
AFFAAA 获得什么?