为什么这样:
var string = "apple:8080";
var reg = /\w*:(\d*)/;
console.log(reg.exec(string).toString());
产生这个:
apple:8080,8080
我想要的只是8080
。我不明白为什么要输出apple:
。我需要在冒号后捕获数字。
答案 0 :(得分:1)
您需要按顺序指定组索引号以获取存储在特定索引中的字符串。默认情况下,.exec
函数会吐出匹配和捕获。所以你得到了apple:8080
匹配和8080
捕获。
> var string = "apple:8080";
> var reg = /\w*:(\d*)/;
> console.log(reg.exec(string)[1].toString());
8080
更新
如果匹配了多个子字符串,则添加额外的while循环。
var re = /\w*:(\d*)/g;
var str = 'apple:8080 orange:8000';
var m;
while ((m = re.exec(str)) != null) {
console.log(m[1]);
}
输出:
8080
8000