我有一个字符串
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);
}
答案 0 :(得分:6)
正则表达式的问题是+
之后缺少\d
量词。 \d
只会匹配一个号码。
您可以使用\d+
来匹配所有号码。 +
量词将匹配前一个类中的一个或多个。
或者,您也可以使用[0-9]+
。
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); });
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;