例如我们输入以下字符串:
#FF00FFNick#AA00efName
我想创建一个模式来获取以下输出数组
{
[0] = {"#FF00FF", "Nick"},
[1] = {"#AA00ef", "Name"}
}
我写下面的代码
var reg = /#([a-f\d]{3}){1,2}(.*?)/gi;
alert(str.match(reg));
但输出我只得到十六进制代码子串。错误在哪里?
答案 0 :(得分:1)
我建议
/(#(?:[a-f\d]{3}){1,2})([^#]+)/gi
请参阅regex demo
<强>详情:
(#(?:[a-f\d]{3}){1,2})
- 第1组捕获
#
- 哈希符号(?:[a-f\d]{3}){1,2}
- 1或2个十六进制字符序列(由于i
修饰符而不区分大小写)([^#]+)
- 第2组捕获除#
以外的1个字符。演示:
var s = "#FF00FFNick#AA00efName";
var re = /(#(?:[a-f\d]{3}){1,2})([^#]+)/gi;
var res = [], m;
while ((m=re.exec(s)) !== null) {
res.push([m[1], m[2]]);
}
console.log(res);
&#13;