问候JavaScript和正则表达专家,
我想在输入字符串中返回所有匹配项,这些字符串是6位十六进制数字,其间有任意数量的空白区域。例如,“333333 e1e1e1 f4f435”应该返回一个数组:
array[0] = 333333
array[1] = e1e1e1
array[2] = f4f435
这就是我所拥有的,但它不太正确 - 我不清楚如何在那里获得可选的空白区域,而且我只得到一场比赛。
colorValuesArray = colorValues.match(/ [0-9A-Fa-f] {6} /);
感谢您的帮助,
-NorthK
答案 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 代码的十六进制。