9

这将提醒 23。

alert(parseInt('23 asdf'));

但这不会提醒 23 但会提醒 NaN

alert(parseInt('asdf 23'));

我怎样才能从 like 获得号码'asd98'

4

5 回答 5

19

您可以使用正则表达式来获取第一个整数:

var num = parseInt(str.match(/\d+/),10)

如果要解析任何数字(不仅仅是正整数,例如“asd -98.43”),请使用

var num = str.match(/-?\d+\.?\d*/)

现在假设您的字符串中有多个整数:

var str = "a24b30c90";

然后你可以得到一个数组

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

结果 :[24, 30, 90]

为了乐趣和影子向导,这是一个没有正则表达式的解决方案,用于仅包含一个整数的字符串(它可以扩展为多个整数):

var num = [].reduce.call(str,function(r,v){ return v==+v?+v+r*10:r },0);
于 2013-09-10T06:53:15.057 回答
3
parseInt('asd98'.match(/\d+/))
于 2013-09-10T06:54:35.890 回答
2
function toNumeric(string) {
    return parseInt(string.replace(/\D/g, ""), 10);
}
于 2013-09-10T06:55:53.743 回答
1

您必须使用正则表达式来提取数字。

var mixedTextAndNumber= 'some56number';
var justTheNumber = parseInt(mixedTextAndNumber.match(/\d+/g));
于 2013-09-10T06:58:59.467 回答
0
var num = +('asd98'.replace(/[a-zA-Z ]/g, ""));
于 2013-09-10T07:28:31.503 回答