向JavaScript和正则表达式大师致敬,我希望返回输入字符串中所有匹配的6位十六进制数,中间可以有任意数量白色,例如,“33333 e1 e1 e1 f4 f435”应该返回一个数组:
array[0] = 333333 array[1] = e1e1e1 array[2] = f4f435
下面是我得到的结果,但它不是很正确--我不清楚如何在其中获得可选白色,而且我只获得了一个匹配。颜色值数组=颜色值匹配(/[0-9A-Fa-f]{6}/);谢谢你的帮忙
6ss1mwsb1#
使用 g 标志进行全局匹配:
/[0-9A-Fa-f]{6}/g
另一个很好的增强是添加单词边界:
/\b[0-9A-Fa-f]{6}\b/g
如果愿意,您还可以设置 i 标志以区分大小写:
/\b[0-9A-F]{6}\b/gi
jckbn6z72#
除上述答案外,更直接的方法可能是:第一个月您可以在这里阅读更多关于Unicode属性的信息。
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); }
bjp0bcyl4#
尝试:
colorValues.match(/[0-9A-Fa-f]{6}/g);
请注意,g标志用于全局匹配。
g
xe55xuns5#
result = subject.match(/\b[0-9A-Fa-f]{6}\b/g);
为您提供给定字符串subject中所有6位十六进制数的数组。\b字边界对于避免匹配较长十六进制数的部分是必要的。
subject
\b
rlcwz9us6#
对于寻找带有alpha代码的十六进制颜色的人,下面的正则表达式有效:
/\b[0-9A-Fa-f]{6}[0-9A-Fa-f]{0,2}\b\g
该代码允许十六进制带或不带字母代码。
6条答案
按热度按时间6ss1mwsb1#
使用 g 标志进行全局匹配:
另一个很好的增强是添加单词边界:
如果愿意,您还可以设置 i 标志以区分大小写:
jckbn6z72#
除上述答案外,更直接的方法可能是:
第一个月
您可以在这里阅读更多关于Unicode属性的信息。
doinxwow3#
这取决于具体情况,但是我 * 通常 * 希望确保我的代码不会默默地接受(并忽略或误解)不正确的输入,所以我通常会这样做。
bjp0bcyl4#
尝试:
请注意,
g
标志用于全局匹配。xe55xuns5#
为您提供给定字符串
subject
中所有6位十六进制数的数组。\b
字边界对于避免匹配较长十六进制数的部分是必要的。rlcwz9us6#
对于寻找带有alpha代码的十六进制颜色的人,下面的正则表达式有效:
该代码允许十六进制带或不带字母代码。