使用javascript将印度货币转换为俄罗斯货币
我用这个正则表达式把数字转换成俄罗斯货币格式。 这是我的密码使用javascript将印度货币转换为俄罗斯货币,javascript,regex,Javascript,Regex,我用这个正则表达式把数字转换成俄罗斯货币格式。 这是我的密码 var price = "12,000.50"; price = price.replace(/[,]+/g, ''); return price.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1."); 但是这个代码是这样转换的:“12.000.50”,而不是像“12.000,50” 有人知道他的,怎么解决这个问题吗? 谢谢您可以使用一个名为number\u format()的函数,该函数由团队从PH
var price = "12,000.50";
price = price.replace(/[,]+/g, '');
return price.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1.");
但是这个代码是这样转换的:“12.000.50”,而不是像“12.000,50”
有人知道他的,怎么解决这个问题吗?
谢谢您可以使用一个名为
number\u format()
的函数,该函数由团队从PHP派生到Javascript
片段:
函数编号\u格式(数字、小数、小数点、千分位数){
编号=(编号+“”)。替换(/[^0-9+\-Ee.]/g“”)
变量n=!isFinite(+数字)?0:+数字
var prec=!isFinite(+小数)?0:Math.abs(小数)
var sep=(typeof thounandssep==‘未定义’?’,’:thounandssep
变量dec=(decPoint的类型==‘未定义’?’:decPoint
变量s=“”
var toFixedFix=函数(n,prec){
var k=数学功率(10,prec)
返回“”+(数学四舍五入(n*k)/k)
.toFixed(prec)
}
//@todo:for IE parseFloat(0.55)。toFixed(0)=0;
s=(prec?toFixedFix(n,prec):“”+数学四舍五入(n)).split(“”)
如果(s[0]。长度>3){
s[0]=s[0]。替换(/\B(?=(?:\d{3})+(?!\d))/g,sep)
}
如果((s[1]| |“)。长度 console.log(格式化)代码>您可以使用一个名为number\u format()
的函数,该函数由团队从PHP派生到Javascript
片段:
函数编号\u格式(数字、小数、小数点、千分位数){
编号=(编号+“”)。替换(/[^0-9+\-Ee.]/g“”)
变量n=!isFinite(+数字)?0:+数字
var prec=!isFinite(+小数)?0:Math.abs(小数)
var sep=(typeof thounandssep==‘未定义’?’,’:thounandssep
变量dec=(decPoint的类型==‘未定义’?’:decPoint
变量s=“”
var toFixedFix=函数(n,prec){
var k=数学功率(10,prec)
返回“”+(数学四舍五入(n*k)/k)
.toFixed(prec)
}
//@todo:for IE parseFloat(0.55)。toFixed(0)=0;
s=(prec?toFixedFix(n,prec):“”+数学四舍五入(n)).split(“”)
如果(s[0]。长度>3){
s[0]=s[0]。替换(/\B(?=(?:\d{3})+(?!\d))/g,sep)
}
如果((s[1]| |“)。长度 console.log(格式化)代码>太好了。你能用同样的方法把俄语转换成美国语吗?i、 从“1.00.000,50”到“1,00000.50”?如果您有许多地区,我建议您查看一些数字解析|格式化库。DigitalJS是一个很好的例子,我假设3==many:)拥有经过良好测试的防弹解决方案总是更好的。除非你有一些严格的要求不使用NIH代码。是的,但在我的情况下,我只有vise a versa。太好了。你能用同样的方法把俄语转换成美国语吗?i、 从“1.00.000,50”到“1,00000.50”?如果您有许多地区,我建议您查看一些数字解析|格式化库。DigitalJS是一个很好的例子,我假设3==many:)拥有经过良好测试的防弹解决方案总是更好的。除非你有一些严格的要求不使用NIH代码。是的,但在我的情况下,我只有vise a versa。
price.replace(/(\.|,)/g, function(x){return {',': '.', '.': ','}[x]})
function number_format (number, decimals, decPoint, thousandsSep) {
number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
var n = !isFinite(+number) ? 0 : +number
var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
var s = ''
var toFixedFix = function (n, prec) {
var k = Math.pow(10, prec)
return '' + (Math.round(n * k) / k)
.toFixed(prec)
}
// @todo: for IE parseFloat(0.55).toFixed(0) = 0;
s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
if (s[0].length > 3) {
s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep)
}
if ((s[1] || '').length < prec) {
s[1] = s[1] || ''
s[1] += new Array(prec - s[1].length + 1).join('0')
}
return s.join(dec)
}
var number = 19883.50;
var formatted = number_format(number, 2, ".", ",");