我正在尝试使用javascript为我的html创建掩码。我正在使用以下代码,但未成功:
function valorMax(v){
v=v.replace(/\D/g,"")
if (v.length <= 20) {
v=v.replace(/(\d{17})(\d)/,"$10000000000000.$2")
}
return v
}
在输入货币值时,我需要在文本字段中输入,它会自动以0(零)结尾,并以分隔美分。 (点),总值为19位数字
Ex:输入100,文本字段中的值将变为00000000000000100.00
Ex:输入10.25,文本字段中的值将变为0000000000000010.25
Ex:输入1.30,文本字段中的值将变为0000000000000001.30
有人可以帮助我吗? 非常感谢。
答案 0 :(得分:3)
您可以将toFixed
与padStart
方法配合使用来实现此目的。
const padWithZeros = (number) => number.toFixed(2).toString().padStart(19, 0)
console.log(padWithZeros(100))
console.log(padWithZeros(10.25))
console.log(padWithZeros(1.3))
答案 1 :(得分:0)
像这样,您无需RegEx就可以实现解决方案。
var input = '10.2'
function formatNumber(input){
var wholeNumber = input.split('.')[0]
var decimalNumber = input.split('.')[1] || ''
if (decimalNumber.length < 2){
decimalNumber = decimalNumber.concat(...new Array(2 - decimalNumber.length).fill(0))
}
if (wholeNumber.length < 17){
wholeNumber = ''.concat(...new Array(17 - wholeNumber.length).fill(0), wholeNumber)
}
console.log(`${wholeNumber}.${decimalNumber}`)
}
formatNumber(input)
答案 2 :(得分:0)
.toLocaleString()
的特殊用途是将字符串转换为语言敏感的货币格式。
// U.S. Currency
const us = (number, digits) => {
return number.toLocaleString('en-US', {
minimumIntegerDigits: digits,
useGrouping: false,
style: 'currency',
currency: 'USD'
});
}
// Generic Currency
const xx = (number, digits) => {
return number.toLocaleString(undefined, {
minimumIntegerDigits: digits,
useGrouping: false,
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
}
console.log(us(111.3, 19));
console.log(us(2500, 19));
console.log(us(.02, 19));
console.log(xx(111.3, 19));
console.log(xx(2500, 19));
console.log(xx(.02, 19));