给定一个由冒号分隔的字符串,与此类似......
xvf:metric:admin:click
我需要捕捉三组......
xvf
metric
admin:click
或另一个例子:
one:two:three:four:five:six:seven
one
two
three:four:five:six:seven
我当前的正则表达式只是单独捕获每个单词,导致4个匹配
/(\s*\w+)/gi
答案 0 :(得分:1)
使用String.match
和Array.slice
函数的解决方案:
var str = "one:two:three:four:five:six:seven",
groups = str.match(/([^:]+?):([^:]+?):(.+)?$/).slice(1);
console.log(groups); // ["one", "two", "three:four:five:six:seven"]
答案 1 :(得分:1)
答案 2 :(得分:0)
解决方案是在:
之前捕获前两个内容,然后在
这是正则表达式:
/(.+?):(.+?):(.+)/
在代码中:
var testStr = "xvf:metric:admin:click";
console.log(/(.+?):(.+?):(.+)/.exec(testStr).slice(1,4))
//["xvf", "metric", "admin:click"]
答案 3 :(得分:0)
由于您使用的是JavaScript,因此实际使用string.split
及更晚Array.slice
和Array.splice
进行字符串操作更有意义:
var str = "one:two:three:four:five:six:seven",
groups = str.split(':');
groups.splice(2, groups.length, groups.slice(2).join(':'));
console.log(groups);