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

时间:2010-01-28 18:06:01

标签: javascript regex

问候JavaScript和正则表达专家,

我想在输入字符串中返回所有匹配项,这些字符串是6位十六进制数字,其间有任意数量的空白区域。例如,“333333 e1e1e1 f4f435”应该返回一个数组:

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

这就是我所拥有的,但它不太正确 - 我不清楚如何在那里获得可选的空白区域,而且我只得到一场比赛。

  

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

感谢您的帮助,

-NorthK

5 个答案:

答案 0 :(得分:22)

使用 g 标志全局匹配:

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

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

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

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

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

答案 1 :(得分:3)

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

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);
}

答案 2 :(得分:2)

尝试:

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

请注意全局匹配的g标记。

答案 3 :(得分:0)

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

为您提供给定字符串subject中所有6位十六进制数字的数组。

\b字边界是必要的,以避免匹配较长的十六进制数字的部分。

答案 4 :(得分:0)

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

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

代码允许带有或不带有 alpha 代码的十六进制。

相关问题