我愿意做以下事情:
我有:
var distance1 = "5.5 Km";
var distance2 = "5,5 Km";
//The below works as expected and returns 5.5
var finalDistance = distance1.replace( /[^\d\.]*/g, '');
//However the below doesn't and print 55 instead
distance2.replace( /[^\d\.]*/g, '');
//I've tried the below too and it throws 5,5. But I want 5.5
distance2.replace( /[^\d\.\,]*/g, '');
答案 0 :(得分:3)
首先,用,
替换.
的所有出现,然后用.
替换非数字字符(''
除外):
distance2 = distance2.replace( /,/g, '.').replace(/[^\d\.]+/g, '');
其中:
/,/g : matches all commas ',' that will be replaced by '.'
/[^\d\.]+ : matches any sequence of non-digit and non-dot ('.') characters that will be removed (replaced by the empty string '').
第一个将变换"5,55 KM"
替换为"5.55 KM"
,然后第二个将后者变换为"5.55"
。
注意:如果您只有一个逗号,或者只对第一个遇到的逗号感兴趣,那么您可以使用:replace(',', '.')
代替replace(/,/g, '.')
。
如果您只使用浮动表示,则可以使用parseFloat
而不是第二个replace
:
var number = parseFloat(distance2.replace(/,/g, '.'));
答案 1 :(得分:0)
replace
的工作原理是“找到此字符串并替换为此字符串”。第一个参数是您要查找的内容,第二个参数是要替换它的内容。因此,在您的代码中,您无需替换,
:
distance2.replace( /[^\d\.]*/g, '');
它也不会编辑“就地”字符串,因此您需要将distance2
变量分配给返回值。此外,对于像这样的简单工作,您不需要使用正则表达式。您只需输入一个字符串作为第一个参数,replace
将找到所有匹配项。我就是这样做的:
distance2 = distance2.replace(',', '.');
进一步阅读:
https://www.w3schools.com/jsref/jsref_replace.asp https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace
答案 2 :(得分:-1)
您需要将替换值重新分配给变量。
即
distance2 = distance2.replace( /[^\d\.]*/g, '');