regex JavaScript正则表达式-匹配一系列十六进制数字

sirbozc5  于 2022-12-19  发布在  Java
关注(0)|答案(6)|浏览(163)

向JavaScript和正则表达式大师致敬,
我希望返回输入字符串中所有匹配的6位十六进制数,中间可以有任意数量白色,例如,“33333 e1 e1 e1 f4 f435”应该返回一个数组:

array[0] = 333333  
array[1] = e1e1e1  
array[2] = f4f435

下面是我得到的结果,但它不是很正确--我不清楚如何在其中获得可选白色,而且我只获得了一个匹配。
颜色值数组=颜色值匹配(/[0-9A-Fa-f]{6}/);
谢谢你的帮忙

  • 北K
6ss1mwsb

6ss1mwsb1#

使用 g 标志进行全局匹配:

/[0-9A-Fa-f]{6}/g

另一个很好的增强是添加单词边界:

/\b[0-9A-Fa-f]{6}\b/g

如果愿意,您还可以设置 i 标志以区分大小写:

/\b[0-9A-F]{6}\b/gi
jckbn6z7

jckbn6z72#

除上述答案外,更直接的方法可能是:
第一个月
您可以在这里阅读更多关于Unicode属性的信息。

doinxwow

doinxwow3#

这取决于具体情况,但是我 * 通常 * 希望确保我的代码不会默默地接受(并忽略或误解)不正确的输入,所以我通常会这样做。

var arr = s.split();
for (var i = 0; i < arr.length; i++) {
    if (!arr[i].match(/^[0-9A-Fa-f]{6}$/)
        throw new Error("unexpected junk in string: " + arr[i]);
    arr[i] = parseInt(arr[i], 16);
}
bjp0bcyl

bjp0bcyl4#

尝试:

colorValues.match(/[0-9A-Fa-f]{6}/g);

请注意,g标志用于全局匹配。

xe55xuns

xe55xuns5#

result = subject.match(/\b[0-9A-Fa-f]{6}\b/g);

为您提供给定字符串subject中所有6位十六进制数的数组。
\b字边界对于避免匹配较长十六进制数的部分是必要的。

rlcwz9us

rlcwz9us6#

对于寻找带有alpha代码的十六进制颜色的人,下面的正则表达式有效:

/\b[0-9A-Fa-f]{6}[0-9A-Fa-f]{0,2}\b\g

该代码允许十六进制带或不带字母代码。

相关问题