我有两个不同的数字,每个都有一个美元符号。我想分别得到这两个号码。
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>
上面的代码只替换了第一个美元符号,但我有两个美元符号和数字。如何单独获取75
和300
?
答案 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,'');
整个脚本可以这样工作,但具体取消$符号。
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;
答案 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]