Javascript Regex Capture

时间:2015-01-29 23:46:27

标签: javascript regex

为什么这样:

var string = "apple:8080";
var reg = /\w*:(\d*)/;
console.log(reg.exec(string).toString());

产生这个:

apple:8080,8080

我想要的只是8080。我不明白为什么要输出apple:。我需要在冒号后捕获数字。

1 个答案:

答案 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