Javascript 有从字符串中提取数字的函数吗

Javascript 有从字符串中提取数字的函数吗,javascript,string,numbers,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”没有返回正确的值或其他方法吗 谢谢您的回答。您可以使

我试图找出如何获得字符串中的数字

我尝试了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”没有返回正确的值或其他方法吗


谢谢您的回答。

您可以使用
字符串。将
与正则表达式匹配以过滤出数字,然后使用
一元+
数字(str)
parseInt
获取数字

let str=“MyString(50)”;
让数字=+str.match(/\d+/);

控制台日志(编号)
使用
匹配
正则表达式操作获取数字

var str=“MyString(50)”;
var matches=str.match(/(\d+/);

console.log(匹配[0])这里是一个更全面的正则表达式,用于检测字符串中的各种数字:

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

   binary   |       hex         | sign?      int/float       exponential part?
const matchNumbers=/0[bB][01]+|0[xX][0-9a-fA-F]+|[+-](?:\d*.\d+\.?)(?:[eE][+-]?\d+)/g;
设str=`
Let-1
美国+2。
start-3.3
和+.4
清单-5e-5
一些+6e6
号码0x12345
格式0b10101
`;
log(“字符串”,str);
常量匹配=str.match(匹配编号);
日志(“匹配项”,匹配项);
const numbers=matches.map(编号);
控制台日志(“数字”,数字)

。由于控制台包装器{top:0;max height:100%!important}
Number
将尝试将整个字符串转换为一个数字,因此它不会分析第一次出现的数字。因为
MyString
根本不是一个数字,所以您会得到NaN。这是有道理的,如果你有
“我的4号2”
——你期望
4
2
42
?三者的可能性相同。好的,我刚刚理解了正确的
Number
函数用法。在这个cas中,我正在搜索
50
,但是如果得到
[5,0]
,我会处理它。谢谢你的号码可以包括什么?它总是整数还是也可以有浮点数?是否存在类似于
mystring123some123
这种情况下需要的输出是什么?否,它只能类似于
string(140)
没有分隔的数字。。。但是使用regexp的答案似乎适合我的需要。谢谢!我不熟悉regexp,我会看看它是如何工作的。如果你有一个好医生,我很乐意读。谢谢你的回答这是对regex的解释,谢谢你宝贵的帮助!谢谢,我会用RegExp。