我正在尝试找出如何获取字符串中的数字。
我尝试了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”没有返回正确的值或另一种方式吗?
感谢答案。
答案 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}