如何只获取 javascript 中的数字?

How to get only number in javascript?

我有两个不同的号码,每个号码都有一个美元符号。我想分别得到这两个数字。

JavaScript:

function price_range(id){
     //var str = $('#'+id).val();
     var str = ' - 0';
     var removeDollar = str.replace(/$/,'');
     alert(removeDollar);
}
<a href="javascript:;" onclick="price_range('amount')">Click Here</a>

上面的代码只替换了第一个美元符号,但是我有两个带数字的美元符号。如何分别获得 75300

你可以像这样从字符串中获取所有数字

console.log(' - 0'.match(/(\d+)/g));
# [ '75', '300' ]

注意:这个简单的 RegEx 将匹配并获取所有数字,即使字符串中的数字超过 2 个。但是对于这个简单的任务,您不需要复杂的 RegEx。

如果你想修复你的程序,你可以这样做

console.log(' - 0'.replace(/$/g, '').split(/\s*-\s*/));
# [ '75', '300' ]

replace(/$/g, '') 将替换字符串中的 $ 符号,然后您可以根据 \s*-\s* 拆分字符串,这意味着零个或多个白色 space 字符,然后-,然后是零个或多个白色 space 字符。

您可以扩展 .replace() 函数中的正则表达式以具有全局标志 g:

str.replace(/$/g,'');

整个脚本将像这样工作,但将特定于删除 $ 符号。

function price_range(id){
     //var str = $('#'+id).val();
     var str = ' - 0';
     var removeDollar = str.replace(/$/g,'');
     alert(removeDollar);
}
<a href="javascript:;" onclick="price_range('amount')">Click Here</a>

一个选项是使用如下正则表达式提取数字:

var str = ' - 0 some other 500%';
var arrOfStrings = str.match(/\d+/gi);
// arrOfStrings = ['70', '300', '500']
var arrOfNrs = arrOfStrings.map(function (e) {
    return parseInt(e);
});  // map not supported by all browsers. you can use the _.map from underscorejs.org
// arrOfNrs = [70, 300, 500]