正则表达式,从字符串中选择第一个数字

时间:2015-12-23 08:34:02

标签: javascript regex string

我有一个字符串

var str = "14⊰Ⓟ⊱ 7⊰➆Ⓑ⊱ 12⊰Ⓢ⊱ 7⊰➆Ⓑ⊱"; 

我需要在字符串中选择第一个数字(14,7,12,7)。

我编写了以下代码代码,但是这段代码选择了分开的数字(1,4,7,1,2,7):

for (var i = 0; i < str.length; i++) {
    newStr = str.match(/\d/g);
}

2 个答案:

答案 0 :(得分:6)

正则表达式的问题+之后缺少\d量词。 \d只会匹配一个号码。

您可以使用\d+来匹配所有号码。 +量词将匹配前一个类中的一个或多个。

或者,您也可以使用[0-9]+

Regex101 Demo

var str = '14⊰Ⓟ⊱ 7⊰➆Ⓑ⊱ 12⊰Ⓢ⊱ 7⊰➆Ⓑ⊱';
var matches = str.match(/\d+/g);

console.log(matches);
document.write('<pre>' + JSON.stringify(matches, 0, 4) + '</pre>');

答案 1 :(得分:1)

该循环看起来多余,除非您从copypaste中省略了某些内容。 String对象的match方法返回一个数组,而不是一个字符串。

var numbers = str.match(/\d+/g);

为您提供以下数组:["14", "7", "12", "7"]

您可以通过以下方式进一步将匹配转换为整数:

numbers = numbers.map(function(n) { return parseInt(n); });

实施例

&#13;
&#13;
var str = "14⊰Ⓟ⊱ 7⊰➆Ⓑ⊱ 12⊰Ⓢ⊱ 7⊰➆Ⓑ⊱";
var numbers = str.match(/\d+/g).map(function(n) { return parseInt(n); });
// or as Tushar pointed out:
var numbers = str.match(/\d+/g).map(Number);
document.write("<pre>" + JSON.stringify(numbers) + "</pre>");
&#13;
&#13;
&#13;