如何只获取javascript中的数字?

时间:2015-03-09 12:57:08

标签: javascript regex string replace

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

JavaScript的:

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

上面的代码只替换了第一个美元符号,但我有两个美元符号和数字。如何单独获取75300

3 个答案:

答案 0 :(得分:8)

您可以从字符串中获取所有数字,例如

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

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

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

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

replace(/\$/g, '')会从字符串中替换$符号,然后您可以根据\s*-\s*分割字符串,这意味着零个或多个空格字符,然后是- ,然后是零个或多个空格字符。

答案 1 :(得分:1)

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

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

整个脚本可以这样工作,但具体取消$符号。

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

答案 2 :(得分:0)

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

var str = '$70 - $300 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]