是否有从字符串中提取数字的功能

时间:2019-09-20 09:08:06

标签: javascript string numbers

我正在尝试找出如何获取字符串中的数字。

我尝试了Number(string)函数,但返回的是“ NaN” ...

例如:

let str = "MyString(50)";

/*Function that return "NaN"*/
let numbers = Number(str);

console.log(numbers);


//Output expected : 50
//Output if get : 50

有人知道为什么“ Number”没有返回正确的值或另一种方式吗?

感谢答案。

3 个答案:

答案 0 :(得分:1)

您可以使用带有正则表达式的String.match来过滤数字,并使用unary +Number(str)parseInt来获取数字

let str = "MyString(50)";

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

console.log(numbers);

答案 1 :(得分:1)

match正则表达式操作用于获取数字。

 var str = "MyString(50)"; 
 var matches = str.match(/(\d+)/);
 
 console.log(matches[0]);

请参阅此链接以了解正则表达式链接[https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions]

答案 2 :(得分:1)

这里有一个更全面的正则表达式来检测字符串中的各种数字:

/ 0[bB][01]+ | 0[xX][0-9a-fA-F]+ | [+-]? (?:\d*\.\d+|\d+\.?) (?:[eE][+-]?\d+)? / g;

   binary   |       hex         | sign?      int/float       exponential part?

const matchNumbers = /0[bB][01]+|0[xX][0-9a-fA-F]+|[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;

let str = `
Let      -1
us       +2.
start    -3.3
and      +.4
list     -5e-5
some     +6e6
number   0x12345
formats  0b10101  
`;

console.log("the string", str);

const matches = str.match(matchNumbers);

console.log("the matches", matches);

const numbers = matches.map(Number);

console.log("the numbers", numbers);
.as-console-wrapper{top:0;max-height:100%!important}